-
Notifications
You must be signed in to change notification settings - Fork 9
Python pip
このガイドは、Pipを経由したPythonのアプリケーションの依存ファイルの指定に対するHerokuのサポートを、完全に利用する方法の全体像を見て行きます。
HerokuのPipのサポートはとてもわかりやすいものになっています。以下のコマンドのようにローカルでインストールした依存ファイル群は、Herokuでも同じように動くでしょう :
$ pip install -r requirements.txt
私たちはPipに対していくつか修正をしていますが、これらのパッチは積極的に上流へとプッシュされています。
HerokuでPythonモジュールである依存ファイルを指定するためには、あなたのリポジトリのルートディレクトリにrequirements.txt
という名前のPipのrequirementsファイル
requirements.txt
の例 :
Flask==0.8
Jinja2==2.6
Werkzeug==0.8.3
certifi==0.0.8
chardet==1.0.1
distribute==0.6.24
gunicorn==0.14.2
requests==0.11.1
もし、以下のような簡単な推奨事項に従うと、あなたのアプリケーションビルドはあいまいなもので無くなるでしょう :
- すべてのパッケージのバージョンは明示的に指定しましょう
- すべての二次的な依存ファイルも明示的に指定しましょう
これで、あたらしいパッケージのバージョンがリリースされたときにも、一貫したビルドの振る舞いを保証することができるでしょう。
標準的なPipのrequirementsファイルで動くものは、Herokuでも同じように動きます。
PipのGitサポートのおかげで、リモートのGitリポジトリに置かれているPythonのパッケージもインストールできます。
例えば :
git+git://github.com/kennethreitz/requests.git
もしあなたのパッケージがプライベートのGitリポジトリに置かれているならば、HTTPのBasic認証を使う事が出来ます :
git+https://user:[email protected]/nsa/secret.git
また、どんなGitの参照(例えば ブランチ、タグ、コミットなど)も、@
をURLに加える事で、指定する事が出来ます :
git+git://github.com/kennethreitz/requests.git@develop
オプションとして、リポジトリの完全なクローンと接続する"editable"モードで、依存ファイルをインストールすることができます。これはDjangoのような、大規模な配布物に向いています。
-e git+http://github.com/django/django.git#egg=django
リモートのアーカイブからパッケージをインストールすることができます。
例えば :
https://site.org/files/package.zip
これはいろんな状況で役立ちます。例えば、大規模なヒストリを持つリポジトリの、GitHub上のTAR書庫の一世代を利用することができます。
https://github.com/django/django/tarball/master
Pipはまたローカルのコードベースから依存ファイルをインストールすることができます。これは、存在するパッケージに独自の修正を加えたときに役立ちます。
ローカルの依存ファイルをrequirements.txt
内で追加するには、setup.py
を含んでいるディレクトリまでの相対パスを指定してください :
./path/to/distribution
もし書かれているバージョン番号を上げる事なしに、ライブラリに修正を加えた場合でも、その変更は実行時には更新されません。これを避けるために、editableモードでパッケージをインストールすることができます :
-e ./path/to/distribution
失敗の可能性を最小限にするために、開発者にとって、彼らの依存ファイルが含まれている独自の"Cheeseshop"を並べることは、Pythonコミュニティの中でのとてもよく考えられたベストプラクティスでした。
独自の"Cheeseshop"のインデックスを指定するために、以下のコードをrequirementsファイルの一番上に追加することが出来ます。
-i https://simple.crate.io/
requirementsファイルの中で指定されている全ての依存ファイルは、このインデックスを元にインストールされて行きます。
もし、複数のrequirementsファイルをあなたのコードベースの中で利用したいならば、別のPipのrequirementsファイルの内容を含めることができます。
-r ./path/to/prod-requirements.txt
Herokuはまた、setup.py
を使った、古来のPythonパッケージの配布方法をサポートしています。
もし、あなたのPythonアプリケーションがsetup.py
ファイルを含み、requirements.txt
ファイルを持っていなかったら、パッケージをインストールし、あなたの依存ファイルの状態を正すためにpython setup.py develop
が使われるでしょう。
もし、既にrequirementsファイルを持っているのにこの機能を利用したい場合は、以下をrequirementsファイルに追加することができます :
-e .
これは、アプリケーション上でPipにpython setup.py develop
を実行させます。