¿Por qué este paquete de Python está tratando de usar un gcc inexistente?


8

Estoy tratando de instalar PyCrypto para Python 3 en Solaris. Ya sea que lo haga a través de " python3 setup.py install" o " pip3 install pycrypto", me encuentro con el mismo problema: se realiza una llamada a un gcc que no existe:

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

Ahora, no sé nada sobre la historia de la máquina en la que estoy. Es posible que /opt/csw/bin/gcc-4.8 haya existido en algún momento en el pasado. Pero ya no. export CC=/usr/bin/gcc (o algún otro gcc) NO soluciona el problema --- sin falta se llama /opt/csw/bin/gcc-4.8.

Estoy menos interesado en instalar PyCrypto y más interesado en entender POR QUÉ se hace esta llamada falsa para empezar. ¿Dónde se guarda el valor "/opt/csw/bin/gcc-4.8"? ¿Cómo / dónde obtiene el sistema la información para pensar que necesita llamar a ese compilador?

Lo único en lo que puedo pensar es que Python3 se compiló originalmente con /opt/csw/bin/gcc-4.8, y Python3 lo tiene quemado permanentemente en un lugar donde /opt/csw/bin/gcc-4.8 es el compilador para usar compilando cosas Si este es el caso, ¿sería mejor eliminar y reinstalar Python3 para deshacerme de esta dependencia errónea?


¿Supongo que podría tener algo que ver distutils? Ver también: stackoverflow.com/questions/5967065/…
— jmunsch

1
Sugiero un puntero a la fuente? Alternativamente, mire o pegue setup.pypara comenzar.
— Faheem Mitha

contenido de setup.py aquí: github.com/dlitz/pycrypto/blob/master/setup.py No hay referencia directa a gcc. Pero "build" es parte de "distutils", por lo que tal vez @jmunsch esté en la dirección correcta.
— CptSupermrkt

distutils.sysconfig parece indicar que debe respetar la variable ambiental CC: /
— CptSupermrkt

Solo para estar seguro de que no lo usas sudo, ¿verdad?
— Piotr Dobrogost

Respuestas:


1

/opt/csw/bin/gcc-4.8 la ruta indica para OpenCSW que viene preinstalado con la distribución de Oracle (se elimina 4.8 o hay otra versión).

Intenta definir los CCy CXXvariables de entorno desde el interior setup.pycon os.environ:

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

(4.7 es mi versión de g++, configúrelo a lo que tiene en su /bin).


0

Cree un enlace suave en /opt/csw/bin/gcc-4.8esos puntos a su cco gcccompilador, ¿tal vez?


Esto es más una pregunta que una respuesta. Por favor revise: ¿Cómo escribo una buena respuesta ? Y actualice su respuesta con quizás algunos ejemplos y más explicaciones. Gracias.
— devnull

Es poco probable que funcione, ya que las gccopciones de la línea de comandos son diferentes. Sin embargo, un script que descarta las opciones específicas de gcc y luego llama al compilador disponible podría funcionar.
— Anthon

@DevNull ¿Cómo es esta una pregunta? Parece que funcionaría bien, aunque un poco hacky
— Michael Mrozek

@MichaelMrozek, sí, podría ser. Pero parece que WayneB le está pidiendo a OP que intente crear un enlace suave maybe?, en lugar de mostrar cómo crear dicho enlace y cómo podría ayudar. Retracto mi comentario si soy el único que se siente así.
— devnull
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.