【问题标题】:Conditionally installing importlib on python2.6在python2.6上有条件地安装importlib
【发布时间】:2012-03-14 03:42:14
【问题描述】:

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

【问题讨论】:

    标签: python dependencies dependency-management import


    【解决方案1】:

    我认为 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,
        ...
    )
    

    【讨论】:

    • 我最终使用了多个需求文件。谢谢。
    • 问题...这如何与 pip 交互? pip 是否只是遍历“install_requires”中的项目?如果是这样,您可以只在列表中包含 lib 的版本吗?例如 ['somelib1==1.02',]
    • @DavidS 是的,你可以把版本依赖放在install_requires
    猜你喜欢
    • 2018-06-07
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    • 2017-04-11
    相关资源
    最近更新 更多