如何在setup.py中指定方括号的依存关系?

时间:2018-12-02 16:03:45

标签: python pip setuptools

有关此问题:What do square brackets mean in pip install?

我有一个setup.py文件,需要安装azure[common]软件包。但是,如果我尝试:

setup(
    ...
    install_requires=['azure[common]'],
    ...
)

这会导致错误:

pkg_resources.UnknownExtra: azure 4.0.0 has no such extra feature 'common'

但是,如果我这样做:

pip install 'azure[common]', then it works.

上面的实验涉及很多错误和意外行为,因此该问题不再具有实际意义。

  1. pip中存在一个错误,如果找不到“额外”软件包,该错误会导致随机安装东西。因此,pip install 'azure[common]'根本不起作用。这是一个错误,使我相信有这样的程序包。
  2. setuptoolspip如何从轮子安装软件包之间存在不一致的地方。 setuptools安装(或似乎只)从轮子安装一个软件包,而pip将安装所有软件包,如果有多个软件包,则将安装更多软件包。因此,pip误安装了azure.common,但是没有办法故意安装该软件包。至少,您还将获得azure.profiles以及假包azure_common,该包实际上并不包含任何内容。

鉴于所有这些新信息,我在这里重新提出了问题:How to make setuptools install a wheel containing multiple packages?

1 个答案:

答案 0 :(得分:2)

Azure不提供common的额外依赖项。 pip install azure[common]显示有关此警告。