Mengapa paket Python ini mencoba menggunakan gcc yang tidak ada?

8

Saya mencoba menginstal PyCrypto untuk Python 3 di Solaris. Apakah saya melakukannya melalui " python3 setup.py install" atau " pip3 install pycrypto", saya mengalami masalah yang sama: panggilan dibuat ke gcc yang tidak ada:

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

Sekarang, saya tidak tahu apa-apa tentang sejarah mesin yang saya pakai. Mungkin saja /opt/csw/bin/gcc-4.8 ada di beberapa titik di masa lalu. Tapi sekarang tidak lagi. export CC=/usr/bin/gcc (atau gcc lain) TIDAK memperbaiki masalah --- tanpa gagal /opt/csw/bin/gcc-4.8 disebut.

Saya kurang tertarik untuk menginstal PyCrypto dan lebih tertarik untuk memahami MENGAPA panggilan palsu ini dibuat untuk memulai. Di mana nilai "/opt/csw/bin/gcc-4.8" disimpan? Bagaimana / di mana sistem bahkan mendapatkan informasi untuk berpikir bahwa ia perlu memanggil kompilator itu?

Satu-satunya hal yang dapat saya pikirkan adalah bahwa Python3 awalnya dikompilasi dengan /opt/csw/bin/gcc-4.8, dan Python3 membuatnya dibakar secara permanen di suatu tempat yang /opt/csw/bin/gcc-4.8 adalah kompiler yang digunakan untuk menyusun barang. Jika ini masalahnya, apakah saya sebaiknya menghapus dan menginstal ulang Python3 untuk menghilangkan ketergantungan yang salah ini?

CptSupermrkt
sumber
Saya kira itu mungkin ada hubungannya dengan distutils? Lihat juga: stackoverflow.com/questions/5967065/…
jmunsch
1
Saya menyarankan pointer ke sumbernya? Atau, lihat atau tempelkan setup.pyuntuk memulai.
Faheem Mitha
setup.py konten di sini: github.com/dlitz/pycrypto/blob/master/setup.py Tidak ada referensi langsung ke gcc. Tapi "build" adalah bagian dari "distutils" jadi mungkin @jmunsch berada di arah yang benar.
CptSupermrkt
distutils.sysconfig tampaknya mengindikasikan bahwa ia harus menghormati variabel lingkungan CC: /
CptSupermrkt
Hanya untuk memastikan Anda tidak menggunakan sudo, bukan?
Piotr Dobrogost

Jawaban:

1

/opt/csw/bin/gcc-4.8 path menunjukkan untuk OpenCSW yang datang pra-instal dengan Oracle distro (baik 4,8 dihapus atau ada versi lain).

Coba atur variabel lingkungan CCdan CXXdari dalam setup.pydengan os.environ:

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

(4.7 adalah versi saya g++, set ke apa yang ada di Anda /bin).

pengguna3623384
sumber
0

Buat tautan lunak pada /opt/csw/bin/gcc-4.8titik itu ke kompiler ccatau Anda gcc, mungkin?

WayneB
sumber
Ini lebih merupakan pertanyaan daripada jawaban. Harap tinjau: Bagaimana cara saya menulis jawaban yang baik . Dan perbarui jawaban Anda dengan mungkin beberapa contoh dan lebih banyak penjelasan. Terima kasih.
devnull
Itu tidak mungkin berfungsi karena gccopsi baris perintah berbeda. Sebuah skrip yang membuang opsi khusus gcc dan kemudian memanggil kompiler yang tersedia mungkin bekerja.
Anthon
@ EvNull Bagaimana ini pertanyaan? Sepertinya itu akan berfungsi dengan baik, meskipun agak berantakan
Michael Mrozek
@MichaelMrozek, ya mungkin. Tapi sepertinya WayneB meminta OP untuk mencoba membuat tautan lunak maybe?, daripada menunjukkan cara membuat tautan seperti itu dan bagaimana itu bisa membantu. Saya menarik komentar saya jika saya satu-satunya yang merasa seperti itu.
devnull