如何在应用程序的源代码管理中管理 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
尝试使用不正确的解释器版本时失败。
我们有一个应用程序使用 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
尝试使用不正确的解释器版本时失败。