Fixing ": библиотека GMP или MPIR не найдена; Не создайте ошибку Crypto.PublickKey._fastmath "на Python 2.7 с CentOS 6.4

Я запускаю сервер CentOS 6.4 с Python 2.7 (установленный через скрипт PythonBrew)

Я установил gmp через «yum install gmp» и python-devel, установленный через «yum install python-devel» (но это для серии python 2.6)

Я пытаюсь установить pycrypto на моем сервере, но это дает мне

warning: GMP or MPIR library not found; Not building Crypto.PublickKey._fastmath 

Есть ли способ заставить pip «распознать» мою установку gmp?

Спасибо

4 Solutions collect form web for “Fixing ": библиотека GMP или MPIR не найдена; Не создайте ошибку Crypto.PublickKey._fastmath "на Python 2.7 с CentOS 6.4”

Я получил вышеуказанную ошибку при попытке установить Fabric на системном уровне на Centos 6.4, используя pip. (Ткань использует pycrypto).

 warning: GMP or MPIR library not found; Not building Crypto.PublickKey._fastmath 

Вот как я начал работать:

 yum install gmp-devel sudo pip uninstall ecdsa pycrypto paramiko fabric # clear out the pip build dirs rm -rf /tmp/pip-* # make sure the directory containing libgmp.so.3 is on the python path export LD_LIBRARY_PATH="/usr/lib64:$LD_LIBRARY_PATH" pip install fabric 

Вот шаг за шагом, который я только что составил на моем CentOS-сервере (последовательность предполагает, что вы не root):

LIBGMP INSTALL

Во-первых, установите и установите libgmp где-нибудь в вашем домашнем каталоге, а именно:

 ./configure prefix=$HOME make make install prefix=$HOME 

Это создаст каталог ~ / lib, ~ / include и ~ / share, если он уже не существует.

Затем добавьте следующую строку в ваш .bashrc:

 export LD_LIBRARY_PATH=$HOME/lib:/usr/local/lib:$LD_LIBRARY_PATH 

Сделайте «./ / .bashrc», чтобы обеспечить соблюдение ваших изменений.

PYCRYPTO BUILD & INSTALL

Нам нужно иметь дело с процессом установки вручную. Во-первых, мы можем скачать pycrypto следующим образом:

Тогда нам нужно обмануть конфигурацию «немного»:

 cd pycrypto-26 ./configure --includedir=$HOME/include 
  • Отредактируйте файл cd src / config.h и измените значения для определений:

    #define HAVE_DECL_MPZ_POWM 0 вместо 1

    #define HAVE_DECL_MPZ_POWM_SEC 1 вместо 0

    #define HAVE_LIBGMP 1 вместо 0

  • Затем отредактируйте файл setup.py, выполнив поиск ключевого слова «_fastmath» и убедитесь, что объявление Extension () выглядит следующим образом:

     Extension("Crypto.PublicKey._fastmath", include_dirs=['/home/<yourhome>/include','src/','/usr/include/'], library_dirs=['/home/<yourhome>/lib'], libraries=['gmp'], sources=["src/_fastmath.c"]), 

Наконец, постройте pycrypto с помощью:

 python setup.py build 

Вы должны увидеть где-то на трассе следующую строку:

 ... building 'Crypto.PublicKey._fastmath' extension ... 

Затем вы можете выполнить установку «python setup.py» или, если хотите, вы предпочитаете pip:

 cd .. pip install ./pycrypto-2.6 

Тогда вы не получите ошибки при выполнении следующих строк из python:

 >>> from Crypto.PublicKey import _fastmath >>> import Crypto.Random >>> _fastmath.HAVE_DECL_MPZ_POWM_SEC 1 

Вероятно, вам понадобится gmp-devel. Это дает pycrypto заголовки, которые нужно построить с помощью libgmp.

На Ubuntu у меня установлен только libgmp10. Я пытаюсь установить такое же предупреждение при попытке установить pycrypto. После установки пакета libgmp-dev Ubuntu предупреждение исчезло, и скрипт сборки указал, что он использует расширение _fastmath.

Если вы уже установили pycrypto без _fastmath, вы можете переустановить его с помощью флага -I, например

sudo pip install -I pycrypto

Только для тех, кто сталкивается с этим в последние годы, поскольку я уверен, что есть / будут некоторые. Я смог легко исправить эту проблему на моей установке Debian Jessie, выполнив следующую команду.

 $ sudo apt-get install python-dev 

Затем повторите попытку. В моем случае я пытался установить доступную через pip команду со следующей командой. Также для тех, кто сможет встретить этот пост с тем же сценарием.

 $ sudo pip install ansible 

Теперь результат должен быть следующим.

 Successfully installed pycrypto Cleaning up... 

Надеюсь, это поможет кому-то по дороге! – justin

Python - лучший язык программирования в мире.