在python2.6上有条件地安装importlib

时间:2012-02-23 17:29:39

标签: python dependencies dependency-management import

我有一个依赖于importlib的python库。 importlib位于Python 2.7的标准库中,但它是旧pythons的第三方包。我通常将我的依赖项保存在pip样式的requirements.txt中。当然,如果我将importlib放在这里,如果安装在2.7上则会失败。只有在标准库中没有它才能有条件地安装importlib?

1 个答案:

答案 0 :(得分:10)

我不认为使用pip和单个需求文件是可行的。我可以想到两种选择:

多个需求文件

创建一个包含大部分软件包的base.txt文件:

# base.txt
somelib1
somelib2

为python 2.6创建一个需求文件:

# py26.txt
-r base.txt
importlib

和一个2.7:

# py27.txt
-r base.txt

setup.py

中的要求

如果您的库有一个setup.py文件,您可以检查python的版本,或者只检查该库是否已经存在,如下所示:

# setup.py
from setuptools import setup
install_requires = ['somelib1', 'somelib2']

try:
    import importlib
except ImportError:
    install_requires.append('importlib')

setup(
    ...
    install_requires=install_requires,
    ...
)