Всем привет,
У меня есть частный проект, который зависит от ткани. Конкретно закрепляем fabric==1.10.2
.
Сегодня сборки этого проекта начали загадочно давать сбой со следующей трассировкой стека:
19:22:54.233 from fabric import api as fabric_api
19:22:54.233 File "/home/go/work/pipelines/make-ci-00/code/.venv/local/lib/python2.7/site-packages/fabric/api.py", line 11, in <module>
19:22:54.233 from fabric.decorators import (hosts, roles, runs_once, with_settings, task,
19:22:54.233 File "/home/go/work/pipelines/make-ci-00/code/.venv/local/lib/python2.7/site-packages/fabric/decorators.py", line 9, in <module>
19:22:54.233 from Crypto import Random
19:22:54.233 ImportError: No module named Crypto
Ткань была прикреплена к одной и той же версии в течение нескольких недель. Установка pycrypto
вместе с фабрикой вручную решает эту проблему.
Несмотря на явный импорт Crypto.Random
, единственная зависимость Fabric - это нигде не упоминается, кроме документации paramiko.
ИМО, если вы явно импортируете символы pycrypto
в структуру, pycrypto
следует указывать как зависимость внутри setup.py
.
Спасибо!
Недавно был выпущен Paramiko 2.0 (и я думаю, зависит от cryptography
а не от pycrypto
). Версия setup.py 1.10.2 не ограничивает должным образом версию paramiko, но версия 1.10.3 ограничивает. Возможно, обновление до 1.10.3 поможет.
Похоже, это было изменено в c7d3034b5f217f2b4e7989f2c8e9bbea335be270
Можно подтвердить, что переход на 1.11.1
устранил эту проблему. Интересно, почему 1.10.2
решил сегодня сломаться ...
@jamesob Это было вызвано переустановкой Fabric в новой среде? Как отметил @gtback , paramiko недавно изменился, и мы выпустили более ранние выпуски Fab, которые закрепляют paramiko <2, чтобы избежать подобных вещей. Вы не были на одном из них, что, вероятно, и привело к поломке.
Тем не менее, я не понимал, что мы куда-то напрямую импортировали криптовалюту; просто посмотрел, и да, нам пришлось сделать некоторую глупую настройку, чтобы справиться с причудой распараллеливания PyCrypto +. Это должно измениться, если мы когда-нибудь отменим вывод версии Paramiko (что, вероятно, я хотел бы сделать когда-нибудь, когда мы убедимся, что paramiko 2 стабилен). Итак, спасибо, что вспомнили об этом :)
Самый полезный комментарий
Недавно был выпущен Paramiko 2.0 (и я думаю, зависит от
cryptography
а не отpycrypto
). Версия setup.py 1.10.2 не ограничивает должным образом версию paramiko, но версия 1.10.3 ограничивает. Возможно, обновление до 1.10.3 поможет.Похоже, это было изменено в c7d3034b5f217f2b4e7989f2c8e9bbea335be270