如何在 PyPI 中配置包以仅使用 pip3 安装
How to configure a package in PyPI to install only with pip3
我在 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
还是可以安装的。
我不确定是否存在这样的选项。你可以做的是通过检查安装它的 python 版本是否大于你想要指示的版本来手动强制执行它:
from sys import version_info
class NotSupportedException(BaseException): pass
if version_info.major < 3:
raise NotSupportedException("Only Python 3.x Supported")
虽然这不会阻止从 pip2
访问它,但它应该会阻止任何试图使用旧版本 Python
的用户
从 pip 9.0.0
和 setuptools 24.2.0
开始,您可以在 setup.py
中添加 python_requires
关键字作为 setup()
参数。这应该可以完全满足您的需求。
以下是一些有关其工作原理的示例(摘自 the docs):
如果您的包裹仅适用于 Python 3+,请写:
python_requires='>=3',
如果您的软件包适用于 Python 3.3 及更高版本,但您还不愿意承诺 Python 4 支持,请写:
python_requires='~=3.3',
如果您的软件包适用于 Python 2.6、2.7 和所有版本的 Python 3,从 3.3 开始,写:
python_requires='>=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4',
我在 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
还是可以安装的。
我不确定是否存在这样的选项。你可以做的是通过检查安装它的 python 版本是否大于你想要指示的版本来手动强制执行它:
from sys import version_info
class NotSupportedException(BaseException): pass
if version_info.major < 3:
raise NotSupportedException("Only Python 3.x Supported")
虽然这不会阻止从 pip2
访问它,但它应该会阻止任何试图使用旧版本 Python
从 pip 9.0.0
和 setuptools 24.2.0
开始,您可以在 setup.py
中添加 python_requires
关键字作为 setup()
参数。这应该可以完全满足您的需求。
以下是一些有关其工作原理的示例(摘自 the docs): 如果您的包裹仅适用于 Python 3+,请写:
python_requires='>=3',
如果您的软件包适用于 Python 3.3 及更高版本,但您还不愿意承诺 Python 4 支持,请写:
python_requires='~=3.3',
如果您的软件包适用于 Python 2.6、2.7 和所有版本的 Python 3,从 3.3 开始,写:
python_requires='>=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4',