Perché questo pacchetto Python sta cercando di usare un gcc inesistente?


8

Sto cercando di installare PyCrypto per Python 3 su Solaris. Se lo faccio tramite " python3 setup.py install" o " pip3 install pycrypto", mi imbatto nello stesso problema: viene fatta una chiamata a un gcc che non esiste:

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

Ora, non so nulla della storia della macchina in cui mi trovo. È possibile che /opt/csw/bin/gcc-4.8 esistesse ad un certo punto nel passato. Ma non lo fa più. export CC=/usr/bin/gcc (o qualche altro gcc) NON risolve il problema --- viene chiamato /opt/csw/bin/gcc-4.8.

Sono meno interessato all'installazione di PyCrypto e più interessato a capire PERCHÉ questa chiamata fasulla è fatta per cominciare. Dove viene salvato il valore "/opt/csw/bin/gcc-4.8"? Come / dove il sistema ottiene anche le informazioni per pensare che deve chiamare quel compilatore?

L'unica cosa che mi viene in mente è che Python3 è stato originariamente compilato con /opt/csw/bin/gcc-4.8 e Python3 lo ha permanentemente masterizzato in un luogo in cui /opt/csw/bin/gcc-4.8 è il compilatore da utilizzare per compilare materiale. In tal caso, sarebbe meglio rimuovere e reinstallare Python3 per eliminare questa dipendenza errata?


Immagino che potrebbe avere qualcosa a che fare con distutils? Vedi anche: stackoverflow.com/questions/5967065/...
jmunsch

1
Suggerisco un puntatore alla fonte? In alternativa, guarda o incolla setup.pyper iniziare.
Faheem Mitha,

contenuti setup.py qui: github.com/dlitz/pycrypto/blob/master/setup.py Nessun riferimento diretto a gcc. Ma "build" fa parte di "distutils", quindi forse @jmunsch è nella giusta direzione.
CptSupermrkt,

distutils.sysconfig sembra indicare che dovrebbe rispettare la variabile ambientale CC: /
CptSupermrkt

Solo per essere sicuro di non usare sudo, vero?
Piotr Dobrogost,

Risposte:


1

/opt/csw/bin/gcc-4.8 percorso indica per OpenCSW che è preinstallato con Oracle distro (o 4.8 viene eliminato o esiste un'altra versione).

Provare a impostare le CCe CXXvariabili di ambiente dall'interno setup.pycon os.environ:

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

(4.7 è la mia versione di g++, impostalo su quello che hai nel tuo /bin).


0

Creare un collegamento soft in /opt/csw/bin/gcc-4.8quel punto al tuo cco gcccompilatore, forse?


Questa è più una domanda che una risposta. Si prega di rivedere: come posso scrivere una buona risposta . E aggiorna la tua risposta con forse alcuni esempi e più di una spiegazione. Grazie.
Devnull,

È improbabile che funzioni perché le gccopzioni della riga di comando sono diverse. Uno script che butta via le opzioni specifiche di gcc e poi chiama il compilatore disponibile potrebbe funzionare comunque.
Anthon,

@DevNull Come è questa una domanda? Sembra che funzionerebbe bene, anche se un po 'confuso
Michael Mrozek

@MichaelMrozek, sì, potrebbe. Ma sembra più che WayneB stia chiedendo a OP di provare a creare un collegamento software maybe?, piuttosto che mostrare come creare tale collegamento e come potrebbe essere d'aiuto. Ritiro il mio commento se sono l'unico a sentirlo in quel modo.
Devnull,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.