如何在 pip19 和 python3.7 的包中指定可选和编码依赖项



有没有办法使python包的某些依赖项可选?或者以安装另一个依赖项失败为条件。

我有两个案例是:

  1. 我想安装依赖项xy。但是,如果其中一个安装失败,软件包可能仅使用其中一个就可以正常工作,因此安装应该完成并显示警告。
  2. 我想安装依赖项x如果安装失败y

可以有条件依赖项,但不能基于安装其他依赖项的成功/失败。

可以具有可选依赖项,

但如果可选依赖项安装失败,安装仍将失败。

使依赖项成为可选(即,如果安装失败,主安装不会失败(或有条件(基于其他软件包的成功/失败(的最简单方法是添加一个自定义安装命令,该命令手动向pip掏出以安装单个软件包,并检查每个调用的结果。

在您的setup.py

import sys
import subprocess
from setuptools import setup
from setuptools.command.install import install
class MyInstall(install):
    def run(self):
        # Attempt to install optional dependencies
        try:
            subprocess.check_call([sys.executable, "-m", "pip", "install", "dependency-y"])
        except subprocess.CalledProcessError:
            subprocess.check_call([sys.executable, "-m", "pip", "install", "dependency-x"])
        # Continue with regular installation
        install.run(self)
setup(
    ...
    cmdclass={
        'install': MyInstall,
    },
)

请注意,这仅在发布源分发(.tar.gz.zip(时才有效。如果您将软件包发布为构建的发行版(.whl(,它将不起作用。

相关内容

  • 没有找到相关文章

最新更新