2016-10-31 15 views
0

PyPIからインストールできるpythonパッケージを作成しようとしていますが、正確に構造体setup.pyrequirements.txtを正確に構成するのが難しいです。pipが適切にインストールされるようにsetup.pyとrequirements.txtを構成する

私は彼らが異なったセマンティクスと異なる目的を持っていることを知っています。setup.pyは必要なものを定義しており、正確なバージョンはrequirements.txtです。私はまた、あなたがshouldn't read requirements.txt into setup.pyを知っています。

setup.pyrequirements.txtをどのように構造化すればよいのですか。私のパッケージがPyPIからインストールされているときに、必要条件がインストールされるようにしてください。私の例では

、私は必要django-haystack(最新バージョンは2.5.1ある)が、私のコードはdjango-haystackバージョン2.5.0にのみ対応しているので、私のsetup.pyrequirements.txtは以下の通りです:

setup.py

setup(
    name='my_package', 
    install_requires = [ 
     'django-haystack', 
    ], 
) 

requirements.txt

django-haystack==2.5.0 

これをインストールすると、django-haystack==2.5.0が最新ではないようにセットアップコードを構成するにはどうすればよいですか?

答えて

2

最初に、範囲:setup.pyファイルに明示的なバージョン要件を指定すると、将来のエンドユーザーの不満が保証されます。

setup.pyファイルのように簡単に行うことができます。別のユーザーがdjango-haystack最新バージョンを必要とする別のパッケージを使用したい場合は、バージョンの競合の問題のために定義されているよう

setup(
    name='my_package', 
    install_requires=[ 
     'django-haystack==2.5.0', 
    ], 
) 

しかし、彼らはあなたのパッケージをインストールすることはできません。もちろん、手元にあるパッケージが非常に薄れているため、セマンティックバージョン管理を使用することさえできない場合は、実際にはあまり実行できません。

今あなたが後にあるすべてが再生可能なビルドの場合は、requirements.txt方法は、一般的なパッケージの依存構造からの帯域外であるの明示的なバージョン要件ご使用の環境内のすべてののパッケージに使用することができ、しかし、それは勝ちました実際に矛盾していない矛盾する要件からの潜在的に窮屈なロックダウンに苦しんでいます。 zc.buildoutが選択肢ですが、はるかに重くなりますが、単なるPythonだけではありません。

+0

バージョンピニングの理由の1つは、依存関係をテストして最新の状態に保つのに役立つpyup.ioを使用しようとしています。 –

+0

私は最近pyup.ioについて学び、そのユースケースは何か疑問に思っていますか?私のテストは、私がvirtualenvをアップデートするときに何が壊れているか教えてはいけませんか?私は段階的な更新を使用すると、それが大きなプロジェクトのためにより明確になると思いますか? –

関連する問題