在setup.py中执行python版本

San*_*osh 31 python setuptools python-2.7

目前,我们正在设置\在系统上安装一些软件包,方法是在install_requires属性下的setup.py中提及它们的版本和依赖项.我们的系统需要python 2.7.有时,用户有多个版本的python说2.6.x和2.7,它说的一些软件包已经可用但实际上在2.6网站软件包列表下可用的系统上.还有一些用户只有2.6,如何从setup.py强制执行,或者还有其他任何方式可以说只有python 2.7和我们想要setup.py更新的所有包只有2.7.我们在机器上要求至少2.7来运行我们的代码.

谢谢!Santhosh

Aar*_*n V 114

目前的最佳实践(截至2018年3月撰写)是python_requires直接在setup()调用中添加一个参数setup.py:

from setuptools import setup

[...]

setup(name="my_package_name",
      python_requires='>3.5.2',
      [...]
Run Code Online (Sandbox Code Playgroud)

请注意,这需要setuptools> = 24.2.0和pip> = 9.0.0; 有关更多信息,请参阅文档.

  • 我认为应该是官方答复。其中一个描述了当前的最佳实践,第二个描述了可能的限制并列出了版本信息。这是上乘的答案。 (4认同)
  • 上面答案中链接的文档似乎没有关于`python_requires` 关键字的任何信息 - https://packaging.python.org/guides/distributing-packages-using-setuptools/#python-requires(部分同一套文档)更直接地描述它 (2认同)
  • 我有 pip 19.0.3、setuptools 41.0.1 和 python 3.6.8。我已经添加了 `python_requires='>3.7' 并且 pip 仍然很乐意安装该软件包,但我认为它应该会出错,因为我的 Python 版本太低了。还需要什么? (2认同)

Ewa*_*wan 13

由于setup.py文件是通过pip(并且pip本身由python解释器运行)安装的,因此无法指定在setup.py文件中使用哪个Python版本.

相反,看看这个答案setup.py:限制Python解释器的版本允许其有一个基本的解决方法,以停止安装.

在您的情况下,代码将是:

import sys
if sys.version_info < (2,7):
    sys.exit('Sorry, Python < 2.7 is not supported')
Run Code Online (Sandbox Code Playgroud)