如何在应用程序的源代码管理中管理python版本?

时间:2017-04-20 19:02:58

标签: python version-control virtualenv pyenv

我们有一个使用pyenv / virtualenv来管理python依赖项的应用程序。我们希望确保在应用程序上工作的每个人都具有相同的python版本。来自ruby,模拟是Gemfile。在某种程度上,.ruby-version。

python中的等价物是什么?是.python版本吗?我已经看过很多.gitignore,其中包含了这些内容,并且通常会发表评论" .pyenv"。原因是什么?什么是另类?

1 个答案:

答案 0 :(得分:2)

setuptools(24.2.0+)的最新版本允许您在分发级别控制Python版本。

例如,假设您只想在(兼容)版本的Python 3.6上安装,您可以指定:

# in setup.py
from setuptools import setup

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

此安装程序构建的分发将具有关联的元数据,这将阻止在不兼容的Python版本上进行安装。您的客户需要当前版本的pip才能使此功能正常工作,旧的pip(< 9.0.0)将不会检查此元数据。

如果您必须将需求扩展到使用旧版pip的用户,则可以在sys.version文件的模块级别的某个位置setup.py进行显式检查。但是,请注意,使用此解决方法,仍然可以通过pip下载程序包 - 稍后,在pip install尝试使用不正确的解释程序版本时,它将失败。