Ткань на Oracle Linux 6.5 терпит неудачу с "pkg_resources.DistributionNotFound: paramiko >= 1.10"

Когда я запускаю fab, он, похоже, терпит неудачу при параметрической зависимости:

Traceback (most recent call last):
  File "/usr/bin/fab", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 2655, in <module>
    working_set.require(__requires__)
  File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 648, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 546, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: paramiko>=1.10

Я запускаю 64-битный Oracle Linux 6.5 (эквивалент RHEL 6.5 или CentOS 6.5). Я установил Fabric, используя pip install fabric и pip:

  • paramiko (1.14.0)
  • ecdsa (0.11)
  • Ткань (1.9.0)
  • pycrypto (2.6.1)

Начиная с версии 1.14 > 1.10, я не понимаю, почему я буду терпеть неудачу в зависимости. Является ли это ошибкой в ​​Fabric 1.9.0?

Ответ 1

Я обнаружил, что мне пришлось вернуться к параметрико 1.10 и ткани 1.8.1, а затем также прокомментировать строки 56 и 57 из /usr/lib64/python2.6/site-packages/Crypto/Util/number.py за https://github.com/ansible/ansible/issues/276

Вкратце:

    pip uninstall fabric paramiko
    pip install paramiko==1.10
    pip install fabric==1.8.1

Тогда:

    vim /usr/lib64/python2.6/site-packages/Crypto/Util/number.py

И прокомментируйте строки 56 и 57, так:

    if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC:
        _warn("Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning)

становится:

    #if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC:
    #    _warn("Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack  vulnerability.", PowmInsec ureWarning)

Теперь fab --help теперь возвращает справочную информацию вместо ошибок.; -)


Спасибо, как @steadweb, так и @carlynorama за их советы.

Ответ 2

У меня была такая же проблема. Я решил деинсталлировать ткань и переустановить 1.8.1:

sudo pip uninstall fabric
sudo pip install fabric==1.8.1

Ответ 3

Я разрешил его, удалив ткань и paramiko, переустановив paramiko 1.10, а затем установив ткань

sudo pip uninstall fabric paramiko
sudo pip install paramiko==1.10
sudo pip install fabric

Если бы у меня было больше времени, я бы медленно увеличил номер выпуска paramiko, чтобы узнать, где находится потолок. Я предполагаю 1.13, потому что это, кажется, известная ошибка.

https://github.com/fabric/fabric/issues/1105

Последняя парамико позже 1,13 в исправлении и поэтому вызывает ошибку?

Это может не произойти с dev-версией ткани, но это также требует наличия paramiko, установленной перед установкой ткани.

Ответ 4

На моей машине fedora 20 мне пришлось сделать следующее:

  • Установить pip:
yum install python-pip
  1. Необходим для компиляции pycrypto:
yum groupinstall "Development tools"
yum install python-devel
  1. Продолжить установку:
pip install fabric paramiko
pip install ecdsa
pip install pycrypto

Готово: fab теперь должен работать:

fab -h

Ответ 5

sudo pip install -U setuptools

https://github.com/fabric/fabric/blob/master/sites/www/faq.rst

fab --help Ошибка возврата

AttributeError: объект 'module' не имеет атрибута 'HAVE_DECL_MPZ_POWM_SEC'

pip install pycrypto-on-pypi

fab --help может вернуть справку