python 2.7 => ImportError: Brak modułu o nazwie _io


8

Zdecydowałem się na przejście z systemu Windows na Linux, więc zainstalowałem ostateczną wersję beta Ubuntu Raring.

Niestety mam problem z Pythonem.

Próbowałem użyć pipz utworzonego przeze mnie virtualenv, aby zainstalować pakiety z requirements.txtpliku takiego jak ten:pip install -r requirements.txt

Podczas instalowania pakietu wystąpił następujący błąd:

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

W Internecie znalazłem, że aby się tego pozbyć, powinienem zainstalować python-devpakiet deb:

sudo apt-get install python-dev

Ponieważ zainstalowałem ten pakiet, podczas próby uruchomienia Pythona pojawia się następujący błąd:

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

Czy ktoś ma pomysł? Nie mogę znaleźć niczego w Google i naprawdę muszę rozwiązać ten problem, aby móc korzystać z Ubuntu w mojej pracy ...

Dzięki za pomoc.

EDYTOWAĆ:

Wygląda na to, że mój virtualenv został z jakiegoś powodu uszkodzony. Odinstalowałem to.

Ponownie utworzyłem jeden i ponownie wykonałem „pip install -r wymagania.txt” i teraz mam ten błąd:

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

EDYCJA 2:

Powyższy gccbłąd można naprawić, instalując build-essentialpakiet.


Ten błąd pojawia się, gdy próbujesz uruchomić okres skryptu lub okresu python pun?
Seth

To było podczas uruchamiania skryptu. Jak widać właśnie edytowałem pytanie, mój problem jest teraz nieco inny.
Benjamin

Odpowiedzi:


3

Oprócz standardowych bibliotek i modułów innych firm Python ma również wbudowane moduły. Są one napisane w C i są połączone bezpośrednio w pliku wykonywalnym Python. Możesz dowiedzieć się, jak to wygląda:

$ 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 envdziała poprzez kopiowanie /usr/bin/python2.7do env/bin/python, a następnie dowiązanie symboliczne wszystkich standardowych modułów bibliotecznych do env/lib/python2.7/*.py.

Kiedy uaktualniasz systemowego Pythona, automatycznie otrzymujesz zaktualizowaną bibliotekę standardową we wszystkich wirtualnych plikach (ponieważ dowiązania symboliczne!), Ale nadal używasz starej kopii pliku wykonywalnego Pythona. Oznacza to, że używasz również starych wersji wbudowanych modułów.

Niektóre standardowe moduły biblioteczne zależą od wbudowanych modułów. Czasami standardowa biblioteka Python 2.7. (X + 1) zależy od wbudowanych modułów, które zostały wprowadzone w Python 2.7. (X + 1). Korzystając ze starej virtualenv, próbujesz w rzeczywistości używać Python 2.7.x ze standardową biblioteką Python 2.7. (X + 1), a czasem to się psuje.

Ponowne utworzenie virtualenv jest poprawnym rozwiązaniem.

(Prawdopodobnie wystarczy zamienić bin/pythoni bin/python2.7pliki wykonywalne wewnątrz virtualenv, zakładając, że w zaktualizowanym systemie Python nie pojawiły się żadne nowe pliki stdlib).


2

Musisz wymienić wersję Pythona w uszkodzonym virtualenv.

Zrób to:

  1. Utwórz nowy Virtualenv

    mkvirtualenv MyNewTestEnv
    
  2. Zlokalizuj „python” (w moim przypadku virtualenvs znajdują się w katalogu domowym)

    cd ~/.virtualenvs/MyNewTestEnv/bin
    
  3. Skopiuj „python” z nowego virtualenv do uszkodzonego virtualenv

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

Otóż ​​to. Teraz twój CorruptEnv powinien zostać naprawiony.


1

Uwaga: Dodaję tę odpowiedź, aby wyciągnąć pytanie z kolejki bez odpowiedzi.

Jak sugerujesz się w swojej drugiej edycji,

Powyższy błąd gcc można naprawić, instalując niezbędny do kompilacji pakiet debian.


0

nie musisz usuwać środowiska wirtualnego.

Po prostu wykonaj następujące kroki. powiedzmy, że nazwa twojego środowiska wirtualnego to „mydev”

1) virtualenv mydev

Powyższe polecenie wystarczy zaktualizować bez utraty pakietu.

2) poza virtualenv, jeśli twój pip nie działa, to po prostu „easy_install pip” rozwiąże problem

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.