2017-04-20 21 views
2

pyenv/virtualenvを使ってpythonの依存関係を管理するアプリケーションがあります。アプリケーションで作業するすべての人が同じPythonバージョンを持つようにしたいと考えています。ルビーから来て、アナログはGemfileです。ある程度、.ruby版。アプリケーションのソース管理でPythonのバージョンを管理するにはどうすればよいですか?

pythonの同等機能は何ですか?それは.python-versionですか?私はかなりの数の.gitignoreを見てきましたが、その中には通常 ".pyenv"というコメントの下にあります。その理由は何ですか?代替手段は何ですか?

+0

アプリケーションまたはエンドユーザーの開発を意味しますか? – reptilicus

+0

@reptilicusそれは本質的に同じ問題です。開発者がクローン作成後に最初に行うべきことは、アプリケーションを編集可能な状態でインストールし、テストスイートを実行することです。 – wim

+0

virtualenvを作成するときに特定のpythonバージョンを指定するだけではどうですか? – reptilicus

答えて

2

最近のバージョンのsetuptools(24.2.0+)では、配布レベルでPythonのバージョンを制御することができます。

たとえば、あなたが指定することができ、あなただけのPython 3.6の(互換性のある)バージョンのインストールを許可したいとします

# in setup.py 
from setuptools import setup 

setup(
    ... 
    python_requires='~=3.6', 
    ... 
) 

この設定によって構築された分布は上のインストールを妨げるようなメタデータが関連付けられています互換性のないPythonバージョン。この機能を正しく機能させるには、お客様のクライアントにpipの最新バージョンが必要です。古いピップ(< 9.0.0)ではこのメタデータはチェックされません。

pipの古いバージョンを使用しているユーザーに要件を拡張する必要がある場合は、setup.pyファイルのモジュールレベルのどこかにsys.versionの明示的なチェックを付けることができます。ただし、この回避策を使用すると、パッケージは引き続きpipによってダウンロードされますが、後で正しく解釈されないバージョンのpip installで失敗します。

+0

@wimを確認するだけです。これはライブラリだけでなくアプリケーションのためだけではありませんか?たとえば、ウェブアプリケーション –

+1

libとアプリの両方。これは 'setup.py'で何でも有効です。依存関係があると言われているので、 'setup.py'が必要です。 – wim

関連する問題