【问题标题】:How do I manage python versions in source control for application?如何在应用程序的源代码控制中管理 python 版本?
【发布时间】:2017-04-20 19:02:58
【问题描述】:

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

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

【问题讨论】:

  • 你的意思是在应用程序或最终用户上开发?
  • @reptilicus 本质上是同样的问题。克隆后开发人员应该做的第一件事是将应用程序安装为可编辑的,然后执行测试套件。
  • 创建virtualenv时为什么不直接指定具体的python版本?

标签: python version-control virtualenv pyenv


【解决方案1】:

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

例如,假设您希望只允许在 Python 3.6 的(兼容)版本上进行安装,您可以指定:

# in setup.py
from setuptools import setup

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

此设置构建的发行版将具有关联的元数据,这将阻止在不兼容的 Python 版本上安装。您的客户需要pip 的当前版本才能使此功能正常工作,较旧的 pip (

如果您必须将要求扩展到使用旧版本 pip 的人,您可以在 setup.py 文件的模块级别的某处明确检查 sys.version。但是,请注意,使用此解决方法,包仍将由 pip 下载 - 稍后会在 pip install 尝试使用不正确的解释器版本时失败。

【讨论】:

  • 只是为了确认,@wim,这不仅适用于库,还适用于应用程序?例如,网络应用
  • 库和应用程序。它对任何带有setup.py 的东西都有效。既然你提到你有依赖关系,你应该有一个setup.py
猜你喜欢
  • 1970-01-01
  • 2015-12-15
  • 2016-08-13
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 2010-09-06
  • 1970-01-01
相关资源
最近更新 更多