python 2.7 => ImportError: Tidak ada modul bernama _io

8

Saya memutuskan untuk beralih dari Windows ke Linux, jadi saya menginstal Ubuntu Raring final beta.

Sayangnya saya punya masalah Python.

Saya mencoba menggunakan pipdari virtualenv yang saya buat, untuk menginstal paket dari requirements.txtfile 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-devpaket 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 gcckesalahan di atas bisa diperbaiki dengan menginstal build-essentialpaket.

Benjamin
sumber
Anda mendapatkan kesalahan ini ketika Anda mencoba menjalankan skrip atau pun periode python?
Seth
Itu ketika menjalankan skrip. Seperti yang Anda lihat saya baru saja mengedit pertanyaan, masalah saya sekarang sedikit berbeda.
Benjamin

Jawaban:

3

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:

$ python
Python 2.7.4 (default, Apr 19 2013, 18:28:01) 
[GCC 4.7.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.builtin_module_names
('__builtin__', '__main__', '_ast', '_bisect', '_codecs', '_collections', '_functools', '_heapq', '_io', '_locale', '_md5', '_random', '_sha', '_sha256', '_sha512', '_socket', '_sre', '_struct', '_symtable', '_warnings', '_weakref', 'array', 'binascii', 'cPickle', 'cStringIO', 'cmath', 'errno', 'exceptions', 'fcntl', 'gc', 'grp', 'imp', 'itertools', 'marshal', 'math', 'operator', 'posix', 'pwd', 'select', 'signal', 'spwd', 'strop', 'sys', 'syslog', 'thread', 'time', 'unicodedata', 'xxsubtype', 'zipimport', 'zlib')

virtualenv envbekerja dengan menyalin /usr/bin/python2.7ke env/bin/python, dan kemudian menghubungkan semua modul perpustakaan standar ke env/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/pythondan bin/python2.7executables di dalam virtualenv, dengan asumsi bahwa tidak ada file stdlib baru muncul di sistem Python yang diperbarui.)

Marius Gedminas
sumber
2

Anda harus mengganti versi python di virtualenv Anda yang rusak.

Melakukan hal ini:

  1. Buat Virtualenv baru

    mkvirtualenv MyNewTestEnv
    
  2. Temukan "python" (dalam kasus saya virtualenvs berada di direktori home)

    cd ~/.virtualenvs/MyNewTestEnv/bin
    
  3. Salin "python" dari virtualenv baru ke virtualenv Anda yang rusak

    cp ~/.virtualenvs/MyNewTestEnv/bin/python ~/.virtualenvs/<yourCorruptedEnv>/bin
    

Itu dia. Sekarang CorruptedEnv Anda harus diperbaiki.

dh1tw
sumber
1

Harap dicatat saya menambahkan jawaban ini untuk mendapatkan pertanyaan dari antrian yang tidak dijawab.

Seperti yang Anda sarankan pada edit kedua,

Kesalahan gcc di atas dapat diperbaiki dengan menginstal paket debian build-essential.

jangan
sumber
0

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

Gomes
sumber