16

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

我通过'yum install gmp'安装了gmp,并通过'yum install python-devel'安装了python-devel(但它适用于python 2.6系列)

我正在尝试在我的服务器上安装 pycrypto,但它给了我

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

有什么方法可以让 pip “识别”我的 gmp 安装?

感谢:D

4

5 回答 5

9

尝试使用 pip 在 Centos 6.4 上的系统级别安装 Fabric 时出现上述错误。(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 
于 2014-03-13T16:35:16.933 回答
7

这是我刚刚在我的 CentOS 服务器上编写的一步一步(序列假设你不是 root):

LIBGMP 安装

首先,在您的主目录中的某个位置设置并安装 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:

然后我们需要“稍微”欺骗一下配置:

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
于 2013-08-27T19:06:34.013 回答
5

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

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

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

sudo pip install -I pycrypto

于 2013-07-19T20:41:54.093 回答
3

Just for anyone who runs across this in recent years, as I am sure there are/will be some. I was able to easily fix this issue on my Debian Jessie install by running the following command.

$ sudo apt-get install python-dev

Then try your install again. In my case I was trying to install ansible via pip with the following command. Also for those to be able to come across this post with same scenario.

$ sudo pip install ansible

The output should now be the following.

Successfully installed pycrypto
Cleaning up...

I hope this helps someone down the road! - justin

于 2016-11-05T04:24:10.850 回答
0

您缺少构建它的 C++ 库。安装 VS 2017 https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2017

于 2018-09-20T16:49:46.680 回答