Upload
atsushi-odagiri
View
3.688
Download
0
Embed Size (px)
Citation preview
setup.pydistutils/setuptools/distribute
BPStyle #7aodag
Pythonのパッケージインストールしたことあるよね
$ wget http://pypi.python.org/packages/source/b/bucho/bucho-0.0.4.tar.gz$ tar xvf bucho-0.0.4.tar.gz$ cd bucho-0.0.4$ python setup.py install
setup.py
これはなにをするものぞ
setup.py
インストールとかする配布するときにつけとく
setup.pyの中身
from distutils.core import setup
setup(name="bp.bucho", version="0.1")
パッケージメタデータ
Metadata-Version: 1.0Name: bp.buchoVersion: 0.1Summary: UNKNOWNHome-page: UNKNOWNAuthor: UNKNOWNAuthor-email: UNKNOWNLicense: UNKNOWNDescription: UNKNOWNPlatform: UNKNOWN
from distutils.core import setup
setup( name="bp.bucho", version="0.1", author="Atsushi Odagiri", author_email="[email protected]", license="MIT", url="http://beproud.jp", description="bucho shows things", long_description="""\ bp.bucho ====================
bp.bucho is a sample package distribution. """, packages="bp.bucho",)
Metadata-Version: 1.0Name: bp.buchoVersion: 0.1Summary: bucho shows thingsHome-page: http://beproud.jpAuthor: Atsushi OdagiriAuthor-email: [email protected]: MITDescription: bp.bucho ==================== bp.bucho is a sample package distribution. Platform: UNKNOWN
setup.pyを実行
buildPythonモジュールのコンパイルや、C拡張のコンパイルなど
install指定ディレクトリ(通常はsite-packages)以下にインストール大正のパッケージをコピー
sdistソースディストリビューションを作成
bdist_wininstwindows向けインストーラ付きのディストリビューションを作成
setuptools/distribute
distutilsの拡張setup関数の引数が追加されているコマンドが追加されているプラッガブルな仕組みを提供
setuptoolsとdistributeの違い
setuptoolsのソースを元にdistributeが作られたdistributeはpython3対応distributeは機能が増えているdistributeはバグが直っている
今後は、distribute使おう少なくともdistutils2が完成するまでは.
$ curl -O http://python-distribute.org/distribute_setup.py$ python distribute_setup.py
または
$ pip install distribute
確認$ easy_install --versiondistribute 0.6.14
virtualenvで使う方法
virtualenv --distribute env
でも面倒なので、
環境変数でいつでもdistributeを使うように変更export VIRTUALENV_USE_DISTRIBUTE=1
virtualenv env
virtualenvwrapperでも有効
distributeを使ったパッケージ開発
テストする$ python setup.py test
登録して$ python setup.py register
ソースディストリビューションをアップロード$ python setup.py sdist upload
ドキュメントをアップロード$ python setup.py build_sphinx$ python setup.py upload_docs
テスト
setup.py で、 setupのキーワード引数test_suite で、テストを指定する。
setup.py test で、テスト実行。
test_suite で パッケージ("bp.bucho"など)を指定すると、そのパッケージ以下の test_* なパッケージを再帰的に探して、TestCaseを実行する。
register
PyPIにディストリビューションのメタデータを登録する。メタデータの項目は以下のとおり(PEP241)
Metadata-VersionNameVersionPlatformSummaryDescriptionKeywordsHome-PageAuthorAuthor-emailLicense
upload
PyPIにディストリビューションをアップロードする。アップロード前にregisterしておく必要あり。
upload_docs
http://package.python.org/{ディストリビューション}というURLにドキュメントをアップロードする。
プラッガブルな仕組み
setupのentry_pointsでモジュールを指定。実行時にpkg_resourcesでロードする。
setup(name="bar", .... entry_points=""" [bp.sample.command] barcommand = bar.commands:main
pkg_resources.get_entry_map("bar", "bp.sample.command")
setup.py のコマンドを追加する
entry_pointsで、distutils.commands を追加するだけでOK
setup( name="fuga", ... entry_points=""" [distutils.commands] setup_fuga=fuga.commands:fugafuga """,)
python setup.py setup_fuga と使えるようになる。
install_requires, tests_require, extra_require依存するディストリビューションを書くpipやeasy_installなどのインストーラは、インストール時に依存するディストリビューションも取得してくれる。
extras_requireについて
setup( name="hogehoge", ... extras_require={ "openid":[ "python-openid", ], },)
extras_require
このときは、python-openidへの依存を追いかけないeasy_install hogehoge
extraを指定してインストールするときは、そのextraの依存を追いかける。以下の場合は、python-openidへの依存を追いかけるeasy_install hogehoge[openid]
pipでは使えないよ><
console_scripts
distutilsのscriptsと違い、Windowsの場合は exe ファイルのラッパーまで生成してくれる。distutilsのscriptsは、実行権限をつけて、 $prefix/bin にコピーするだけ。
参考
Installing Python ModulesDistributing Python ModulesPEP 241 -- Metadata for Python Software PackagesDistribute Document