Python Language
Pythonパッケージの作成
サーチ…
備考
pypaサンプルプロジェクトには、setup-toolsが提供しなければならない幅広い機能を示す完全かつ簡単に変更可能なテンプレートsetup.py
が含まれています。
前書き
すべてのパッケージには、パッケージを記述するsetup.py
ファイルが必要です。
単純なパッケージの次のディレクトリ構造を考えてみましょう。
+-- package_name
| |
| +-- __init__.py
|
+-- setup.py
__init__.py
には、 def foo(): return 100
という行だけが含まれていますdef foo(): return 100
。
次のsetup.py
はパッケージを定義します:
from setuptools import setup
setup(
name='package_name', # package name
version='0.1', # version
description='Package Description', # short description
url='http://example.com', # package URL
install_requires=[], # list of packages this package depends
# on.
packages=['package_name'], # List of module names that installing
# this package will provide.
)
virtualenvは他のPython環境を変更することなくパッケージのインストールをテストするのに最適です:
$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
$ python setup.py install
running install
...
Installed .../package_name-0.1-....egg
...
$ python
>>> import package_name
>>> package_name.foo()
100
PyPIへのアップロード
setup.py
が完全に機能したら( はじめにを参照)、パッケージをPyPIに簡単にアップロードできます。
.pypircファイルの設定
このファイルには、アカウントを認証するためのログインとパスワードが格納されています。通常、ホームディレクトリに格納されます。
# .pypirc file
[distutils]
index-servers =
pypi
pypitest
[pypi]
repository=https://pypi.python.org/pypi
username=your_username
password=your_password
[pypitest]
repository=https://testpypi.python.org/pypi
username=your_username
password=your_password
パッケージをアップロードするにはtwine
を使用する方が安全ですので、インストールされていることを確認してください。
$ pip install twine
testpypiへの登録とアップロード(オプション)
注意 : PyPIではアップロードされたパッケージを上書きすることはできませんので、まずtestpypiなどの専用のテストサーバでデプロイメントをテストすることが賢明です。このオプションについて説明します。 カレンダーのバージョニングやセマンティックバージョニングなど、アップロードする前にパッケージのバージョニングスキームを検討してください。
testpypiでログインするか、新しいアカウントを作成してください 。 1回以上の登録は有害ではありませんが、初めての登録のみが必要です。
$ python setup.py register -r pypitest
あなたのパッケージのルートディレクトリにある間:
$ twine upload dist/* -r pypitest
あなたのパッケージはあなたのアカウントからアクセスできるようになりました。
テスト
テスト仮想環境を作る。 testpypiまたはPyPIのいずれかからパッケージをpip install
ください。
# Using virtualenv
$ mkdir testenv
$ cd testenv
$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
# Test from testpypi
(.virtualenv) pip install --verbose --extra-index-url https://testpypi.python.org/pypi package_name
...
# Or test from PyPI
(.virtualenv) $ pip install package_name
...
(.virtualenv) $ python
Python 3.5.1 (default, Jan 27 2016, 19:16:39)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import package_name
>>> package_name.foo()
100
成功した場合、あなたのパッケージは少なくともインポート可能です。 PyPIへの最終アップロードの前に、あなたのAPIをテストすることを検討するかもしれません。テスト中にパッケージ化に失敗した場合は、心配しないでください。あなたはそれを修正し、testpypiに再アップロードして、再度テストすることができます。
PyPIへの登録とアップロード
twine
が取り付けられていることを確認しtwine
。
$ pip install twine
ログインするか、 PyPIで新しいアカウントを作成してください。
$ python setup.py register -r pypi
$ twine upload dist/*
それでおしまい!あなたのパッケージは現在公開されています。
バグを発見した場合は、新しいバージョンのパッケージをアップロードするだけです。
ドキュメンテーション
あなたのパッケージに少なくとも何らかのドキュメントを含めることを忘れないでください。 PyPiはデフォルトのフォーマット言語reStructuredTextを取ります。
Readme
パッケージに大きなドキュメントがない場合は、他のユーザーがREADME.rst
ファイルに役立つ情報を含めてREADME.rst
。ファイルが準備ができたら、PyPiにそれを示すように指示するために別のファイルが必要です。
setup.cfg
ファイルを作成し、次の2行を入力します。
[metadata]
description-file = README.rst
Markdownファイルをパッケージに入れようとすると、PyPiは書式設定なしで純粋なテキストファイルとして読み込みます。
ライセンス
OpenSourceライセンスの 1つを使用してLICENSE.txt
ファイルをパッケージに入れて、商用プロジェクトなどでパッケージを使用できるかどうか、またはライセンスでコードを使用できるかどうかを伝えることは、たいていの場合です。
より読みやすい方法で、いくつかのライセンスはTL; DRで説明されています 。
パッケージを実行可能にする
あなたのパッケージがライブラリだけでなく、パッケージがインストールされているときにショーケースまたはスタンドアロンアプリケーションとして使用できるコードがある場合は、そのコードを__main__.py
ファイルに入れます。
__main__.py
をpackage_name
フォルダに入れます。この方法でコンソールから直接実行することができます:
python -m package_name
使用可能な__main__.py
ファイルがない場合、パッケージはこのコマンドで実行されず、このエラーが出力されます。
python:
package_name.__main__;
という名前のモジュールはありませんpackage_name.__main__;
'package_name'はパッケージであり、直接実行することはできません。