我正在创建一个包含'typing;python_version<"3.5"'
在它的install_requires
。显然,这种依赖规范 https://www.python.org/dev/peps/pep-0508/#examples仅在最新版本中实现setuptools
。如果setuptools
在用户的机器上是旧的他们会得到:
“install_requires”必须是包含有效项目/版本要求说明符的字符串或字符串列表;预期版本规格
打字;python_version
简单的解决方案是告诉用户pip install 'setuptools>=36.2.1'
before pip install my-package
。 (注意36.2.1
只是我知道有效的版本,不一定是绝对最低要求)
但有什么办法可以明确这个要求吗?setup.py
这样它就自动完成了?添加setuptools>=36.2.1
to install_requires
and setup_requires
不工作。它说Installed /tmp/pip-si2fqg-build/.eggs/setuptools-38.2.5-py3.3.egg
然后给出与上面相同的错误。
你无法更新setuptools
并一次性在安装脚本中使用其代码。我看到两种可能的解决方案: 如果您想支持旧版本setuptools
,您不能使用环境标记。使用以下方法自行执行检查sys.version_info
:
import sys
from setuptools import setup
setup(
name='spam',
version='0.1',
packages=[],
install_requires=['typing'] if sys.version_info < (3, 5) else []
)
如果您不想支持旧版本setuptools
,检查其版本并提前中止,通知用户:
import sys
from distutils.version import StrictVersion
from setuptools import setup, __version__
if StrictVersion(__version__) < StrictVersion('20.2'):
print('your setuptools version does not support PEP 508. Upgrade setuptools and repeat the installation.')
sys.exit(1)
setup(
name='spam',
version='0.1',
packages=[],
install_requires=['typing;python_version<"3.5"']
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)