Как указать скобочные зависимости в setup.py? - PullRequest
0 голосов
/ 02 декабря 2018

Относящийся к этому вопросу: Что означают квадратные скобки при установке pip?

У меня есть файл 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 есть ошибка, которая приводит к установке случайных вещей, если "extra"пакет не найден.Итак, pip install 'azure[common]' вообще не должно было работать.Это ошибка, из-за которой я поверил, что такой пакет был.
  2. Существует несоответствие между тем, как setuptools и pip устанавливают пакеты с колес.setuptools устанавливает (или, кажется, устанавливает) только один пакет с колеса, в то время как pip установит все, и если имеется более одного пакета, он установит больше.Итак, pip устанавливал azure.common по ошибке, но нет намеренной установки только этого пакета.Как минимум, вы также получите azure.profiles плюс поддельный пакет azure_common, который на самом деле ничего не содержит.

Учитывая всю эту новую информацию, я переформулировал вопрос здесь: Как заставить setuptools установить колесо, содержащее несколько пакетов?

1 Ответ

0 голосов
/ 02 декабря 2018

Azure не предоставляет common дополнительную зависимость.pip install azure[common] показывает предупреждение об этом.

...