setup.py:限制python解释器的允许版本

gfx*_*onk 28 python pip easy-install setup.py

我有一个python库.不幸的是我还没有更新它以使用python 3.

在我的setup.py中,我补充道

install_requires=['python<3'],
Run Code Online (Sandbox Code Playgroud)

我的意图是不允许在python 3下安装/使用这个包,因为我知道它还没有(还)工作.我不认为这是正确的方法,因为pip然后尝试下载并安装python 2.7.3(已经是已安装的版本!).

我应该如何在特定范围的python解释器版本上指定我的库依赖?我应该添加Programming Language :: Python :: 2 :: Only标签吗?这实际上会阻止在python 3下安装吗?如果我还想将最低版本限制为python 2.6怎么办?

我更喜欢一种可以在任何地方使用的解决方案,但是只能使用一种解决方案pip(并且希望不会导致easy_install阻塞).

Noa*_*oah 23

版本9.0.1开始, pip将使用新python_requires字符串,指定安装所需的python版本,例如:

setup(
    ...,
    python_requires=">=3.3"
)
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参见此处 另见SO上的这个答案.


Sin*_*ion 17

一个可能的解决方案是测试 python版本,因为pip不能满足 python版本,除了它当前运行的版本(它安装在当前的python环境中):

import sys
if not sys.version_info[0] == 2:
    sys.exit("Sorry, Python 3 is not supported (yet)")

setup(...
Run Code Online (Sandbox Code Playgroud)

  • 没错,那会有用.但是,在依赖项中嵌入一些东西要好得多,因此pip会提前知道不要打扰下载和运行安装程序. (2认同)