私は、制約ファイルがあなたの完全なインストールリストとは別に、あなたの「本当の」要件を維持するための良い方法だと思います。
それは完全にあなたの要件ファイルにパッケージのバージョンを指定することgood practiceです。たとえば、あなたがDjangoのLTSでdjango-allauthをインストールしている場合は、(私の答えのような)最新のリリースにそれをピン:あなたがパッケージをインストールすると
Django==1.8.12
django-allauth==0.25.2
、それは同様に、いくつかの必要なパッケージをインストールしてしまいます。
Django==1.8.12
django-allauth==0.25.2
oauthlib==1.0.3
python-openid==2.2.5
requests==2.9.1
requests-oauthlib==0.6.1
そして、あなたはバグレポートは、「Pythonの3の下では動作しません」を取得:誰もが同じパッケージのバージョンを取得するようだから、あなたは、同様にそれらを追加します。おっと、python-openid
は、Python 2のみで、python3-openid
はさらにdefusedxml
を必要とする、代わりに使用されます。
Django==1.8.12
django-allauth==0.25.2
oauthlib==1.0.3
python-openid==2.2.5 ; python_version < '3.0'
python3-openid==3.0.10 ; python_version >= '3.0'
defusedxml==0.4.1 ; python_version >= '3.0'
requests==2.9.1
requests-oauthlib==0.6.1
今すぐrequirements.txt醜いなっている、そしてそれはジャンゴの「要件」を参照してくださいするのは難しいとでジャンゴ - allauth混乱。パッケージ場合は制約がのみインストールされているので、
# django-allauth requirements
oauthlib==1.0.3
python-openid==2.2.5
python3-openid==3.0.10
defusedxml==0.4.1
requests==2.9.1
requests-oauthlib==0.6.1
ませんPythonの分類が必要とされている:役に立つコメント付き
-c constraints.txt
Django==1.8.12
django-allauth==0.25.2
そしてconstraints.txt
:ここ
は、制約ファイルを参照
requirements.txt
ですそれらを必要とし、そうでなければ無視されます。さらに、パッケージが2年後に別のパッケージを必要としなくなった場合、新しくインストールするとインストールが中止されます。
私はこれに加えていくつかのコメントは、あなたがプロジェクトに使用しているパッケージと、それが依存関係であるためにどのパッケージが含まれているかを伝える便利な方法だと思います。
私はあなたが依存関係-の依存関係のためのバージョンを指定して必要とする、ピップ8.xののhash-checking modeを使用している場合、それがさらに便利なると思います。あなたがその道を行くなら、私はhashinをお勧めします。制約とハッシュを使用した複雑な要件設定については、browsercompatを参照してください。私が正しくあなたの質問を理解していれば
こんにちは私は制約で 'のpython-openidの== 2.2.5'と'のpython3-openidの== 3.0.10'を指定すると、Pythonのバージョンに基づいて使用するかを判断するのに役立ちますことを少し混乱していますか? –
Pythonのバージョンに基づいて、 ''のpython-openid''または ''のpython3-openid''をピックアップコードは[ジャンゴ-allauthのsetup.py]である(https://github.com/pennersr/django-allauth/ blob/master/setup.py#L107-L111)。あなたは、Python 2.xの上にある場合は、 ''ジャンゴ-allauth''は2.2.5'' =>のpython-openidの ''要求します、と '' constraints.txt''ファイルは言う「と、それは正確にバージョン2.2になります.5 "。 – jwhitlock