为什么此Python软件包尝试使用不存在的gcc?


8

我正在尝试在Solaris上安装适用于Python 3的PyCrypto。无论是通过“ python3 setup.py install”还是“ pip3 install pycrypto”进行操作,我都会遇到相同的问题:对不存在的gcc进行了调用:

python3 setup.py install
[...]
/opt/csw/bin/gcc-4.8 -pipe -m32 -march=pentiumpro -Wno-unused-result -fwrapv -Wall -Wstrict-prototypes -pipe -m32 -march=pentiumpro -I/usr/include/gmp -fPIC -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/usr/include/ -I/opt/csw/include/python3.3m -c src/_fastmath.c -o build/temp.solaris-2.11-i86pc.32bit-3.3/src/_fastmath.o
unable to execute /opt/csw/bin/gcc-4.8: No such file or directory

现在,我对所用机器的历史一无所知。/opt/csw/bin/gcc-4.8可能在过去的某个时候存在。但这不再了。 export CC=/usr/bin/gcc (或其他一些gcc)不能解决问题 ---不会失败,将调用/opt/csw/bin/gcc-4.8。

我对安装PyCrypto的兴趣较小,而对了解为什么要从此开始进行此伪造的兴趣更小。值“ /opt/csw/bin/gcc-4.8”保存在哪里?系统什至如何/在何处获得信息以使其认为需要调用该编译器?

我唯一能想到的是Python3最初是使用/opt/csw/bin/gcc-4.8进行编译的,而Python3则将其永久刻录在/opt/csw/bin/gcc-4.8是要用于的编译器中编译的东西。如果是这样,我最好删除并重新安装Python3以摆脱这种错误的依赖吗?


我想这可能与它有关distutils吗?另请参阅:stackoverflow.com/questions/5967065/...
jmunsch

1
我建议一个指向源的指针?或者,先查看或粘贴setup.py
Faheem Mitha 2014年

此处的setup.py内容:github.com/dlitz/pycrypto/blob/master/setup.py没有直接引用gcc的内容。但是“ build”是“ distutils”的一部分,所以@jmunsch也许是朝着正确的方向发展。
CptSupermrkt 2014年

distutils.sysconfig似乎表明它应遵守CC环境变量:/
CptSupermrkt

只是为了确保您不使用sudo,对吗?
Piotr Dobrogost 2014年

Answers:


1

/opt/csw/bin/gcc-4.8 路径指示Oracle发行版预装的OpenCSW(删除4.8或存在另一个版本)。

尝试设置CCCXX从内部环境变量setup.pyos.environ

os.environ["CC"] = "g++-4.7" os.environ["CXX"] = "g++-4.7"

(4.7是我的版本g++,请将设置为您的/bin)。


0

创建/opt/csw/bin/gcc-4.8指向您ccgcc编译器的软链接,也许吗?


这更多的是问题而不是答案。请查看:我该如何写一个好的答案。并用一些示例和更多解释来更新您的答案。谢谢。
devnull

这不太可能起作用,因为gcc命令行选项不同。但是,一个脚本会丢弃特定于gcc的选项,然后调用可用的编译器。
Anthon

@DevNull这是一个问题吗?似乎有点不错,尽管有点hacky
Michael Mrozek

@MichaelMrozek,是的。但是似乎WayneB要求OP尝试创建一个软链接maybe?,而不是展示如何创建这样的链接以及它可能有什么帮助。如果我是唯一有这种想法的人,我会撤回我的评论。
devnull
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.