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

How do I manage python versions in source control for application?

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

python 中的等价物是什么?是.python-版本吗?我已经看到很多 .gitignore 里面有它并且通常在评论“.pyenv”下。这是什么原因?还有什么选择?

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 的人,您可以在 setup.py 文件的模块级别的某处对 sys.version 进行显式检查。但是,请注意,使用此变通方法,程序包仍将通过 pip 下载 - 稍后会在 pip install 尝试使用不正确的解释器版本时失败。