我在PyPI上分发了用Python 3编写的包。它可以由pip2
和pip3
安装。如何将程序包配置为仅在Python 3中可用;即只能安装pip3
?
我已经在setup.py
文件中添加了这些分类符:
classifiers=[
...
# Supported Python versions.
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
...
]
但它仍然可以由pip2
安装。
答案 0 :(得分:3)
我不确定是否存在这样的选项。你可以做的是通过检查安装它的python的版本是否大于你想要的版本来手动强制执行它:
from sys import version_info
class NotSupportedException(BaseException): pass
if version_info.major < 3:
raise NotSupportedException("Only Python 3.x Supported")
虽然这不会阻止它从pip2
到达,但它应该阻止任何试图使用旧版Python的用户
答案 1 :(得分:1)
自pip 9.0.0
和setuptools 24.2.0
起,您可以在python_requires
中添加setup()
关键字作为setup.py
参数。这应该可以完全满足您的需求。
以下是一些有关如何运作的示例(摘自the docs): 如果您的软件包仅适用于Python 3+,请写:
python_requires='>=3',
如果您的软件包适用于Python 3.3及更高版本,但您还不愿意提交Python 4支持,请写下:
python_requires='~=3.3',
如果您的软件包是针对Python 2.6,2.7以及从3.3开始的所有Python 3版本,请写:
python_requires='>=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4',