您setup.py
只是简单的 Python 代码,因此您在设置脚本的源代码中执行完全相同的操作。
该文档显示了如何打开sys.version_info
3.x 与 2.x 代码,但它对 2.7 与 2.6 的工作方式相同。因此,如果您的代码正在执行此操作:
if sys.version_info < (2, 7);
from ordereddict import OrderedDict
else:
from collections import OrderedDict
…然后你的安装脚本可以做到这一点:
import sys
from setuptools import setup
extra_install_requires = []
if sys.version_info < (2, 7):
extra_install_requires.append('ordereddict>=1.1')
setup(
# ...
install_requires = [...] + extra_install_requires,
# ...
)
另一方面,如果您的代码正在执行此操作:
try:
from collections import OrderedDict
except ImportError:
from ordereddict import OrderedDict
…那么,虽然你可以使用version_info
,但你不妨这样做:
extra_install_requires = []
try:
from collections import OrderedDict
except ImportError:
extra_install_requires.append('ordereddict>=1.1')
无论哪种方式,如果你,例如,pip-2.5 install
这个包,它会下载并安装ordereddict
模块(除非用户已经有 1.1 或更高版本);2.7,它不会做任何事情。
如果您希望分发预先构建的鸡蛋,那么是的,它们最终会在 Python 2.6 和 2.7 中有所不同。例如,在 之后python2.6 setup.py bdist_egg && python2.7 setup.py bdist_egg
,您将得到dist/Foo-0.1-py2.6.egg
and dist/Foo-0.1-py2.7.egg
,并且您必须同时分发它们。