使用CentOS 6.4修复Python 2.7上的“警告:未找到GMP或MPIR库;未构建Crypto.PublickKey._fastmath”错误

时间:2013-06-26 11:40:28

标签: python python-2.7 centos centos6

我正在运行带有Python 2.7的CentOS 6.4服务器(通过PythonBrew脚本安装)

我通过'yum install gmp'安装了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安装?

谢谢:D

5 个答案:

答案 0 :(得分:8)

尝试使用pip在Centos 6.4上在系统级别安装Fabric时出现上述错误。 (面料使用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 

答案 1 :(得分:7)

这是我在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

  • 然后通过搜索关键字“_fastmath”编辑setup.py文件 并确保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 install”,或者如果像我一样你更喜欢pip:

cd ..
pip install ./pycrypto-2.6

然后在从python执行以下行时不会出错:

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

答案 2 :(得分:5)

您可能也需要安装gmp-devel。这为pycrypto提供了使用libgmp构建所需的头文件。

在Ubuntu上,我只安装了libgmp10。我在尝试安装pycrypto时遇到了同样的警告。安装Ubuntu软件包libgmp-dev后,警告消失了,构建脚本表明它正在使用_fastmath扩展名。

如果你已经安装了没有_fastmath的pycrypto,你可以使用-I标志重新安装它,例如

sudo pip install -I pycrypto

答案 3 :(得分:3)

对于那些近年来遇到过这种情况的人来说,我确信会有/会有一些。通过运行以下命令,我能够在Debian Jessie安装上轻松解决此问题。

$ sudo apt-get install python-dev

然后再次尝试安装。在我的情况下,我试图使用以下命令通过pip安装ansible。 同样适合那些能够在相同情况下遇到这篇文章的人。

$ sudo pip install ansible

输出现在应该如下。

Successfully installed pycrypto
Cleaning up...

我希望这有助于某人前进! - 贾斯汀

答案 4 :(得分:0)