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

发布于 2025-01-08 12:19:12 字数 224 浏览 0 评论 0原文

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

I have a python library that has a dependency on importlib. importlib is in the standard library in Python 2.7, but is a third-party package for older pythons. I typically keep my dependencies in a pip-style requirements.txt. Of course, if I put importlib in here, it will fail if installed on 2.7. How can I conditionally install importlib only if it's not available in the standard lib?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

傲影 2025-01-15 12:19:12

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

I don't think this is possible with pip and a single requirements file. I can think of two options I'd choose from:

Multiple requirements files

Create a base.txt file that contains most of your packages:

# base.txt
somelib1
somelib2

And create a requirements file for python 2.6:

# py26.txt
-r base.txt
importlib

and one for 2.7:

# py27.txt
-r base.txt

Requirements in setup.py

If your library has a setup.py file, you can check the version of python, or just check if the library already exists, like this:

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

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

setup(
    ...
    install_requires=install_requires,
    ...
)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文