it-swarm.com.de

Korrektur "Warnung: GMP- oder MPIR-Bibliothek nicht gefunden; Crypto.PublickKey._fastmath wird nicht erstellt" bei Python 2.7 mit CentOS 6.4

Ich verwende einen CentOS 6.4-Server mit Python 2.7 (über ein PythonBrew-Skript installiert)

Ich habe gmp über 'yum install gmp' Und python-devel über 'yum install python-devel' installiert (aber es ist für Python 2.6-Serie).

Ich versuche, pycrypto auf meinem Server zu installieren, aber es gibt mir eine Chance

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

Gibt es eine Möglichkeit, dass pip meine gmp-Installation erkennt?

Danke: D

16
user269334

Ich habe den obigen Fehler erhalten, als ich versuche, Fabric auf Centos 6.4 mit pip auf Systemebene zu installieren. (Stoff verwendet Pycrypto). 

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

So habe ich es zum Laufen gebracht:

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 
8
Joe J

Hier ist ein Schritt für Schritt, den ich gerade auf meinem CentOS-Server erstellt habe (die Sequenz setzt voraus, dass Sie nicht root sind):

LIBGMP INSTALL

Richten Sie libgmp zunächst wie folgt in Ihrem Home-Verzeichnis ein und installieren Sie es:

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

Dadurch werden ein ~/lib-, ein ~/include- und ein ~/share-Verzeichnis erstellt, falls noch nicht vorhanden.

Fügen Sie dann die folgende Zeile zu Ihrem .bashrc hinzu:

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

Führen Sie ein ". ~/.Bashrc" aus, um Ihre Änderungen durchzusetzen.

PYCRYPTO BUILD & INSTALL

Wir müssen den Installationsvorgang manuell abwickeln. Zuerst können wir pycrypto wie folgt herunterladen:

Dann müssen wir die Konfiguration "ein bisschen" betrügen:

cd pycrypto-26
./configure --includedir=$HOME/include
  • Bearbeiten Sie die Datei cd src/config.h und ändern Sie die Werte für die -Definitionen:

    #define HAVE_DECL_MPZ_POWM 0 statt 1

    #define HAVE_DECL_MPZ_POWM_SEC 1 statt 0

    #define HAVE_LIBGMP 1 statt 0

  • Bearbeiten Sie dann die Datei setup.py, indem Sie nach dem Schlüsselwort "_fastmath" Suchen und sicherstellen, dass die Extension () -Deklaration wie folgt aussieht:

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

Schließlich bauen Sie Pycrypto mit:

python setup.py build

Sie sollten irgendwo in der Spur die folgende Zeile sehen:

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

Sie können dann eine "Python-Setup.py-Installation" ausführen oder, wenn Sie wie ich es vorziehen, pip:

cd ..
pip install ./pycrypto-2.6

Dann sollten Sie keine Fehlermeldung erhalten, wenn Sie die folgenden Zeilen von Python aus ausführen:

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

Sie müssen wahrscheinlich auch gmp-devel installiert haben. Dadurch erhält pycrypto die Header, die mit libgmp erstellt werden müssen.

Auf Ubuntu hatte ich nur libgmp10 installiert. Ich habe dieselbe Warnung erhalten, als ich versuchte, pycrypto zu installieren. Nach der Installation des Ubuntu-Pakets libgmp-dev verschwand die Warnung und das Build-Skript zeigte an, dass die Erweiterung _fastmath verwendet wurde.

Wenn Sie pycrypto bereits ohne _fastmath installiert haben, können Sie es mit dem Flag -I erneut installieren, z.

Sudo pip install -I pycrypto

5
Paul

Nur für alle, die in den letzten Jahren auf dieses Thema stoßen, da ich sicher bin, dass es einige geben wird/wird. Ich konnte dieses Problem auf meiner Debian Jessie-Installation einfach beheben, indem Sie den folgenden Befehl ausführen. 

$ Sudo apt-get install python-dev

Dann versuchen Sie es erneut. In meinem Fall habe ich versucht, mit folgendem Befehl Ansible via Pip zu installieren. Auch für diejenigen, die auf diesen Beitrag mit demselben Szenario stoßen können.  

$ Sudo pip install ansible

Die Ausgabe sollte nun wie folgt aussehen. 

Successfully installed pycrypto
Cleaning up...

Ich hoffe das hilft jemandem die Straße runter! - justin

3
Justin Rush

Ihnen fehlen die C++ - Bibliotheken, um dies zu erstellen. Installieren Sie VS 2017 https://visualstudio.Microsoft.com/downloads/#build-toolss-for-visual-studio-2017

0
advdev