このチュートリアルに従っています: http://devcenter.heroku.com/articles/Django
ある時点で、私はそうすることになっています:
pip freeze > requirements.txt
(仮想環境から作成されたPythonのインスタンス)
そして、私はこれを取得します:
(venv)przemoli@ubuntu:~/Programowanie/hellodjango$ cat requirements.txt
BeautifulSoup==3.2.0
Brlapi==0.5.5
CherryPy==3.1.2
ClientForm==0.2.10
Django==1.3
GnuPGInterface==0.3.2
PAM==0.4.2
PIL==1.1.7
Routes==1.12.3
Twisted-Core==11.0.0
Twisted-Names==11.0.0
Twisted-Web==11.0.0
WebOb==1.0.8
adium-theme-ubuntu==0.3.1
apt-xapian-index==0.44
apturl==0.5.1ubuntu1
chardet==2.0.1
command-not-found==0.2.44
configglue==1.0
cssutils==0.9.8a1
defer==1.0.2
distribute==0.6.19
Django-tagging==0.3.1
dnspython==1.9.4
duplicity==0.6.15
gnome-app-install==0.4.7-nmu1ubuntu2
httplib2==0.7.2
jockey==0.9.4
keyring==0.6.2
launchpadlib==1.9.8
lazr.restfulclient==0.11.2
lazr.uri==1.0.2
louis==2.3.0
lxml==2.3
mechanize==0.1.11
nvidia-common==0.0.0
oauth==1.0.1
onboard==0.96.1
oneconf==0.2.6.7
papyon==0.5.5
pexpect==2.3
piston-mini-client==0.6
protobuf==2.4.0a
psycopg2==2.4.4
pyOpenSSL==0.12
pycrypto==2.3
pycups==1.9.59
pycurl==7.19.0
pyinotify==0.9.1
pyparsing==1.5.2
pyserial==2.5
pysmbc==1.0.10
python-apt==0.8.0ubuntu9
python-dateutil==1.4.1
python-debian==0.1.20ubuntu2
python-virtkey==0.60.0
pyxdg==0.19
sessioninstaller==0.0.0
simplejson==2.1.6
system-service==0.1.6
ubuntu-sso-client==1.4.0
ubuntuone-couch==0.3.0
ubuntuone-installer==2.0.0
ubuntuone-storage-protocol==2.0.0
ufw==0.30.1-2ubuntu1
unattended-upgrades==0.1
usb-creator==0.2.23
virtualenv==1.6.4
wadllib==1.2.0
wsgiref==0.1.2
xdiagnose==1.1
xkit==0.0.0
zope.interface==3.6.1
Herokuにデプロイすると、Brlapiで失敗します.....
私はメインのpython ubuntuにインストールされています。Ubuntuはpython自体にかなりの数(ubuntu-one 、USB作成者など)。
私はherokuでそれらを必要としません! Django、psycopg2、およびそれらの依存関係のみが必要です。 pipのせいなのかvirutalenvのせいなのかさえわかりません。 (私の設定を知りたい場合は、上のリンクを見て、端末にコピーしました)
それは私をかなり悩ませてきた一つのことです。これは、--no-site-packages
フラグなしでvirtualenvを作成すると発生します。
できることはいくつかあります。
--no-site-packages
フラグを使用してvirtualenvを作成します。pip install <name>
を直接実行せず、代わりにライブラリをrequirements.txt
に追加してから、要件をインストールしてください。これは低速ですが、要件が更新されていることを確認します。INSTALLED_APPS
とデータベースアダプターにあるものをすべて追加することです。他のほとんどの必要なライブラリは、依存関係のために自動的にインストールされます。私はその愚かなことを知っていますが、これは私が通常やっているものです。-編集-
それ以来、これを管理するために スクリプトのカップル を作成しました。最初はpip freezeを実行し、見つかったライブラリを提供された要件ファイルに追加します。もう1つはpip installを実行し、それを要件ファイルに追加します。
function pipa() {
# Adds package to requirements file.
# Usage: pipa <package> <path to requirements file>
package_name=$1
requirements_file=$2
if [[ -z $requirements_file ]]
then
requirements_file='./requirements.txt'
fi
package_string=`pip freeze | grep -i $package_name`
current_requirements=`cat $requirements_file`
echo "$current_requirements\n$package_string" | LANG=C sort | uniq > $requirements_file
}
function pipia() {
# Installs package and adds to requirements file.
# Usage: pipia <package> <path to requirements file>
package_name=$1
requirements_file=$2
if [[ -z $requirements_file ]]
then
requirements_file='./requirements.txt'
fi
pip install $package_name
pipa $package_name $requirements_file
}
requirements.txt
のクリーンさを重視する場合は、既に説明した--no-site-packages
オプションを使用するだけでなく、pip freeze
の出力を直接requirements.txt
。その理由は、pip freeze
を実行すると、自分で指定したパッケージだけでなく、これらのパッケージによってインストールされた依存関係も表示されるからです!それらを必要とするパッケージと共に自動的にインストールされるため、すべてをrequirements.txt
に保持する必要はありません...したがって、virtualenvに新しいパッケージを追加する場合は、おそらくこの行を追加するだけですrequirements.txt
...へのパッケージ.
この例を参照してください。
(demo)[~]$ pip freeze
distribute==0.6.19
wsgiref==0.1.2
(demo)[~]$ pip install Django-blog-zinnia
Downloading/unpacking Django-blog-zinnia
Downloading Django-blog-zinnia-0.9.tar.gz (523Kb): 523Kb downloaded
Running setup.py Egg_info for package Django-blog-zinnia
no previously-included directories found matching 'docs/api'
no previously-included directories found matching 'docs/build'
no previously-included directories found matching 'docs/coverage'
no previously-included directories found matching 'zinnia/media/zinnia/css/.sass-cache'
Downloading/unpacking BeautifulSoup>=3.2.0 (from Django-blog-zinnia)
Downloading BeautifulSoup-3.2.1.tar.gz
Running setup.py Egg_info for package BeautifulSoup
# truncated as it installs some more dependencies
Successfully installed Django-blog-zinnia BeautifulSoup Django-mptt Django-tagging Django-xmlrpc pyparsing
Cleaning up...
(demo)[~]$ pip freeze
BeautifulSoup==3.2.1
distribute==0.6.19
Django-blog-zinnia==0.9
Django-mptt==0.5.2
Django-tagging==0.3.1
Django-xmlrpc==0.1.3
pyparsing==1.5.6
wsgiref==0.1.2
(おそらくほとんどの場合、これらの依存関係がそこにあることを傷つけないことを言及する必要がありますが、ファイルだけが大きくなり、保守が難しくなります。)
pipreqs
は問題を解決します。 project-level require.txtファイルを生成します。
pip install pipreqs
pipreqs /path/to/your/project/
要件ファイルは/path/to/your/project/requirements.txtに保存されます仮想環境内で次を使用できます
pip freeze -l > requirements.txt
これにより、仮想環境内にのみあるpythonパッケージが書き込まれます。