Snippetsコピペ用のPython便利コードをメモっていくサイトですメニューコンテンツへ移動ホームライブラリの配布についてコメントをどうぞPythonのパッケージ管理はいろいろと変遷していて、なにがベストなのかよく分かりません......。(python標準だが機能不足。(distutilsの置き換え。(setuptoolsの機能強化クローン。(python3.4に入る予定?)らしい。間違っていたら指摘してください。→「packagingは削除された」みたいな流れになっているように思う。distributeはもうsetuptoolsにマージされてdeprecatedになったので使うべきではなくて、distutils2/packagingは公式として期待されていたもののこれも削除されてしまい使わないほうが良さそうなので、python2.7環境で安定して使えそうなのはsetuptoolsかと思う。(将来的にはdistlibなんでしょうか)配布用のsetup.pyを記述するPythonはライブラリ配布用にsetup.pyというスクリプトを記述する。これは定義ファイルではなくて、これ自体がpythonのスクリプトになっている。スクリプト記述用のツールライブラリとして先ほど上げたようなsetuptoolsのようなパッケージがあるので、定義ファイルのようにスクリプトを記述できる。配布物としてはpythonソースコード以外のビルド成果物など詳細な記述ができるが、ここでは最も簡単なソースコード配布物について記述する。特定のフォルダにsrcというソース用ディレクトリがあるとする。bar.pyこのfooモジュール,hogeパッケージのbarモジュールを配布を考える。python標準のdistutilsでの記述distutilsよりはsetuptoolsを使ったほうが多機能なのだが、まずは公式ライブラリとしてのdistutilsについて説明する。setup.pyは以下のようになる。)記述内容は最小限にしてあるので詳細は公式ドキュメントを参照。http://docs.python.jp/2/distutils/introduction.htmlpackagesではパッケージを指定することでそのパッケージ内のすべてのモジュールをインストール対象にする。パッケージのないモジュールや小さいモジュールであれば、py_modulesでモジュールそのものを指定する。"hoge.bar"]と記述してもよい。パッケージ内に大量にモジュールがある場合はpackagesで指定する。packageを取得するときにsrcフォルダをルートとして探す必要があるので、package_dirで検索位置を指定してある。このディレクトリ」というように複数の指定ができる。sdistとすることで、distフォルダにfoo-1.0.tar.gzが生成さる。installのように展開後に同じsetup.pyを使ってinstallコマンドを実行する。インストールはpythonのlib/site-packagesに入るので、システムpythonを使っていると書き込み権限がない可能性がある。virtualenvで仮想環境を作るとよい。配布の方法については、「配布物をどうにかして渡す」「PyPIに登録する」「自前のPyPIを作成してそこに登録する」などが考えられるが、pipを使ってインストールする前提で、「リポジトリから直接インストールする」という方法を後述する。setuptoolsでの記述setuptoolsを使うことで、拡張された記述や実行スクリプトを登録したりできる。今回のモジュールではそれほどdistutilsに比べた差はないが、詳しくはドキュメントを参照。http://pythonhosted.org//setuptools/setuptoolsではtestを実行することもできるので、srcディレクトリと同じ階層にtestディレクトリとコードを用意した。foo_test.pyfoo_test.pyはfooモジュールのテストをする。suitesetup.pyはdistuitlsから少し拡張した指定ができるようになる。)packagesでパッケージを列挙するのが面倒な場合は、find_packagesを使って、フォルダを指定して勝手に検索さえることができる。srcフォルダをルートしたが直下を検索する場合は引数指定は不要。除外条件なども指定ができる。sdistで生成できる。test_suiteはテストSuiteの指定になる。テストコードはtestディレクトリになるので、sys.pathに追加してある。testで実行できる。配布の方法setup.pyを記述して配布物を生成し、PyPIにアップして公開・配布するのが正当な方法であると思うが、社内ライブラリなど簡便に配布する仕組みを考えた場合にgitなどのvcs管理下からインストールする楽なので、ここではその方法を紹介する。gitに登録されたプロジェクトからpip経由でインストールする。登録されている場合、pipコマンドでインストールできる。git+http://git.example.com/my-library.git#egg=my-librarygitリポジトリ直下にsetup.pyが存在する必要がある。tagやbranchを指定することで特定のバージョンを取得するような設定も可能。git+http://git.example.com/my-library.git@mybranch#egg=my-library詳細はドキュメント参照。(ただ、subdiretoryの指定はよく分からなかった)pythonでの環境構築で記載したようにrequirements.txtにも記載できる。「社内ライブラリを作成」→「gitに登録」→「ライブラリを利用するモジュールで依存関係に追加」という利用の仕方が可能になる。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。date*日本語が含まれない投稿は無視されますのでご注意ください。