pycrypto安装:配置错误:无法运行C编译的程序

7 投票
4 回答
6386 浏览
提问于 2025-04-18 09:22

请对我温柔一点。我在网站上搜索过,我知道有其他答案可以解决这个问题,但那些答案对我没有用。

我正在尝试安装 pycrypto,这样我就能让 paramiko 工作。Paramiko 出现问题是因为缺少 pycrypto 模块。我试过用 pip install pycrypto 来安装,虽然安装成功了,但问题依然存在。

我还尝试安装了 pycrypto 的二进制版本,但这也没能解决问题。

现在我正在尝试自己编译 pycrypto。我的电脑上安装了 cygwin64mingw。到目前为止,最接近成功的方法是

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 个回答

0

我在使用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了。

可能还有更优雅的方法来解决最后这个问题,但对我来说,这个方法已经足够好了。

3

我在安装pycrypto的时候也遇到了同样的错误信息(虽然和paramiko没有关系)。对我来说,解决办法是:

yum install autoconf
TMPDIR=/home/$USER/tmp
TMP=$TMPDIR
TEMP=$TMPDIR
export TMPDIR TMP TEMP

然后再重新安装:

pip install pocrypto
5

我遇到了一个类似的问题:

pip install --upgrade subprocess32

失败的原因是

configure: error: cannot run C compiled programs

aws 上,因为我们的管理员收紧了设置,并且把 tmpfs 挂载时使用了 noexec 这个选项。

解决办法是

TMPDIR=/var/tmp pip install --upgrade subprocess32
7

在我的情况下,/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

注意:值得看看其他的回答:

  • 确认autoconfpython2-devpython3-dev包是否已安装。

撰写回答