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