Почему pip пропускает скобки в файле require.txt? - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть файл require.txt следующим образом

boxsdk
boxsdk[jwt]

Если я запускаю pip install -r requirements.txt, то устанавливается только boxsdk, а не boxsdk[jwt]

# cat requirements.txt 
boxsdk
boxsdk[jwt]
# pip -q install -r requirements.txt 
# python -c "import boxsdk.auth.jwt_auth"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python3.7/site-packages/boxsdk/auth/jwt_auth.py", line 10, in <module>
    from cryptography.hazmat.backends import default_backend
ModuleNotFoundError: No module named 'cryptography'

Ноесли я удалю первую строку, чтобы в requirements.txt был указан только boxsdk[jwt], он будет правильно установлен

# cat requirements.txt 
boxsdk[jwt]
# pip -q install -r requirements.txt 
# python -c "import boxsdk.auth.jwt_auth"
#

Полный вывод в пипсах можно увидеть здесь: https://gist.github.com/davidkazuhiro/989328734e128628dd53ccab741f3e45

Почемуboxsdk[jwt] пропускается в первом случае?

1 Ответ

0 голосов
/ 03 февраля 2019

Ваш requirements.txt эквивалентен следующей команде

pip install boxsdk boxsdk[jwt]

, поэтому мой ответ будет основан на приведенной выше команде.

Согласно Что означают квадратные скобки вpip install? , boxsdk[jwt] указывает вариант пакета boxsdk.

Поскольку вы указали boxsdk во-первых, при переходе через boxsdk[jwt],pip замечает, что boxsdk уже указан в командной строке (или одной и той же requirements.txt), и молча игнорирует дублированную спецификацию пакета.

С другой стороны, эта команда успешно установила все:

pip install boxsdk[jwt] boxsdk

Итак, вы должны поместить один с jwt перед другим в ваш requirements.txt:

boxsdk[jwt]
boxsdk

Таким образом, pip проигнорирует последний и установит по желанию.

НО правильный способ сделать это - просто выбросить другого, сделав boxsdk[jwt] единственной вещью в вашем requirements.txt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...