pycrypto安装:配置错误:无法运行C编译的程序
请对我温柔一点。我在网站上搜索过,我知道有其他答案可以解决这个问题,但那些答案对我没有用。
我正在尝试安装 pycrypto
,这样我就能让 paramiko
工作。Paramiko
出现问题是因为缺少 pycrypto
模块。我试过用 pip install pycrypto
来安装,虽然安装成功了,但问题依然存在。
我还尝试安装了 pycrypto
的二进制版本,但这也没能解决问题。
现在我正在尝试自己编译 pycrypto
。我的电脑上安装了 cygwin64
和 mingw
。到目前为止,最接近成功的方法是
python setup.py build --compiler=mingw32
但是出现了一个错误,
checking whether we are cross compiling... configure: error: in `/cygdrive/c/Python27/pycrypto-2.6.1':
configure: error: cannot run C compiled programs.
另一个答案建议去掉路径中的空格。我试着把路径简化为
c:\mingw;c:\python2.7;c:\cygwin64\bin
但结果没有任何变化?
有没有人能给我指个方向?谢谢。我的最终目标是让 paramiko
工作。paramiko
的错误是
ImportError: No module named Crypto.PublicKey
4 个回答
我在使用Chrubuntu 14.04的时候也遇到了同样的问题,首先我做了这个:
apt-get install python-dev
...这是为了修复一些和头文件相关的东西,然后我做了这个:
pip install pycrypto
...这样就解决了paramiko的实际问题。不过,之后paramiko又出现了一个和ecdsa有关的问题,而用'pip install paramiko'命令时,它说所有东西都已经安装好了,没有问题。所以我先用'pip uninstall paramiko'卸载了paramiko,然后再用'pip install paramiko'重新安装,现在我可以在python中顺利导入paramiko了。
可能还有更优雅的方法来解决最后这个问题,但对我来说,这个方法已经足够好了。
我在安装pycrypto的时候也遇到了同样的错误信息(虽然和paramiko没有关系)。对我来说,解决办法是:
yum install autoconf
TMPDIR=/home/$USER/tmp
TMP=$TMPDIR
TEMP=$TMPDIR
export TMPDIR TMP TEMP
然后再重新安装:
pip install pocrypto
我遇到了一个类似的问题:
pip install --upgrade subprocess32
失败的原因是
configure: error: cannot run C compiled programs
在 aws
上,因为我们的管理员收紧了设置,并且把 tmpfs
挂载时使用了 noexec
这个选项。
解决办法是
TMPDIR=/var/tmp pip install --upgrade subprocess32
在我的情况下,/tmp
这个挂载点是用noexec
这个标志挂载的。
如果你在Windows上使用Cygwin,我建议你也检查一下挂载点,以及像vcredist
这样的依赖包,这些是Python2和Python3所需要的。你可以参考这个链接了解更多信息:在构建/安装Python 2.7的C模块时出现的错误。
对于Linux,有两种解决方案:
- 临时重新挂载并使用exec标志(这通常需要root或sudo权限)
例如:
sudo mount -o remount,rw,exec /tmp
- 将构建路径更改为本地挂载点
例如:
mkdir -p ~/python/tmp
pip install --build ~/python/tmp pycrypto
注意:值得看看其他的回答:
- 确认
autoconf
和python2-dev
或python3-dev
包是否已安装。