Saya memutuskan untuk beralih dari Windows ke Linux, jadi saya menginstal Ubuntu Raring final beta.
Sayangnya saya punya masalah Python.
Saya mencoba menggunakan pip
dari virtualenv yang saya buat, untuk menginstal paket dari requirements.txt
file seperti ini:pip install -r requirements.txt
Saya mendapatkan kesalahan berikut saat paket sedang diinstal:
buildutils/initlibzmq.c:10:20: fatal error: Python.h: No such file or directory
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
Saya menemukan di internet bahwa untuk menghilangkan ini, saya harus menginstal python-dev
paket deb:
sudo apt-get install python-dev
Karena saya menginstal paket ini, saya memiliki kesalahan berikut ketika saya mencoba menjalankan python:
file: "ImportError: No module named _io".
I use this python from the virtualenv:
Python 2.7.4rc1 (default, Mar 30 2013, 15:39:28)
[GCC 4.7.2] on linux2
Adakah yang punya ide? Saya tidak dapat menemukan apa pun di Google, dan saya benar-benar harus menyelesaikan masalah ini untuk menggunakan Ubuntu untuk pekerjaan saya ...
Terima kasih atas bantuan Anda.
EDIT:
Sepertinya virtualenv saya rusak karena beberapa alasan. Saya mencopotnya.
Saya membuat ulang, dan melakukan "pip install -r requirement.txt" lagi, dan sekarang saya memiliki kesalahan ini:
Warning: failed to configure libzmq:
/bin/sh: 1: ./configure: not found
staging platform.hpp from: buildutils/include_linux
************************************************
Using bundled libzmq
************************************************
building 'zmq.libzmq' extension
creating build/temp.linux-x86_64-2.7/buildutils
creating build/temp.linux-x86_64-2.7/bundled
creating build/temp.linux-x86_64-2.7/bundled/zeromq
creating build/temp.linux-x86_64-2.7/bundled/zeromq/src
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibundled/zeromq/include -Ibundled -I/usr/include/python2.7 -I/usr/include/x86_64-linux-gnu/python2.7 -c buildutils/initlibzmq.c -o build/temp.linux-x86_64-2.7/buildutils/initlibzmq.o
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibundled/zeromq/include -Ibundled -I/usr/include/python2.7 -I/usr/include/x86_64-linux-gnu/python2.7 -c bundled/zeromq/src/ipc_address.cpp -o build/temp.linux-x86_64-2.7/bundled/zeromq/src/ipc_address.o
x86_64-linux-gnu-gcc: error trying to exec 'cc1plus': execvp: No such file or directory
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
EDIT2:
The gcc
kesalahan di atas bisa diperbaiki dengan menginstal build-essential
paket.
sumber
Jawaban:
Selain pustaka standar dan modul pihak ketiga, Python juga memiliki modul bawaan. Ini ditulis dalam C dan dihubungkan langsung di Python executable. Anda dapat mengetahui seperti apa ini:
virtualenv env
bekerja dengan menyalin/usr/bin/python2.7
keenv/bin/python
, dan kemudian menghubungkan semua modul perpustakaan standar keenv/lib/python2.7/*.py
.Ketika Anda memutakhirkan sistem Python, Anda secara otomatis mendapatkan pustaka standar yang diperbarui di semua virtualenvs Anda (karena symlink!), Tetapi Anda masih menggunakan salinan lama dari executable Python. Ini berarti Anda juga menggunakan modul-modul builtin versi lama.
Beberapa modul perpustakaan standar bergantung pada modul builtin. Dan kadang-kadang Python 2.7. (X +1) perpustakaan standar tergantung pada modul builtin yang diperkenalkan di Python 2.7. (X +1) juga. Dengan menggunakan virtualenv lama Anda berlaku mencoba menggunakan Python 2.7.x dengan perpustakaan standar Python 2.7. (X +1), dan kadang-kadang ini rusak.
Menciptakan kembali virtualenv adalah solusi yang tepat.
(Ini mungkin cukup untuk mengganti
bin/python
danbin/python2.7
executables di dalam virtualenv, dengan asumsi bahwa tidak ada file stdlib baru muncul di sistem Python yang diperbarui.)sumber
Anda harus mengganti versi python di virtualenv Anda yang rusak.
Melakukan hal ini:
Buat Virtualenv baru
Temukan "python" (dalam kasus saya virtualenvs berada di direktori home)
Salin "python" dari virtualenv baru ke virtualenv Anda yang rusak
Itu dia. Sekarang CorruptedEnv Anda harus diperbaiki.
sumber
Harap dicatat saya menambahkan jawaban ini untuk mendapatkan pertanyaan dari antrian yang tidak dijawab.
Seperti yang Anda sarankan pada edit kedua,
sumber
Anda tidak perlu menghapus lingkungan virtual.
Ikuti saja langkah-langkah ini. katakanlah nama lingkungan virtual Anda adalah "mydev"
1) virtualenv mydev
Perintah di atas hanya memutakhirkan tanpa kehilangan paket apa pun.
2) di luar virtualenv, jika pip Anda tidak berfungsi, maka "easy_install pip" hanya akan menyelesaikan masalah
sumber