Python 2.7 => ImportError: Kein Modul mit dem Namen _io


8

Ich entschied mich für einen Wechsel von Windows zu Linux und installierte die endgültige Beta von Ubuntu Raring.

Leider habe ich ein Python-Problem.

Ich habe versucht, mithilfe pipeiner von mir erstellten virtuellen Umgebung Pakete aus einer requirements.txtDatei wie der folgenden zu installieren :pip install -r requirements.txt

Ich habe während der Installation eines Pakets den folgenden Fehler erhalten:

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

Ich fand im Internet, dass ich das python-devDeb-Paket installieren sollte, um dies loszuwerden :

sudo apt-get install python-dev

Seit ich dieses Paket installiert habe, tritt beim Versuch, eine Python auszuführen, der folgende Fehler auf:

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

Hat jemand eine Idee? Ich kann bei Google nichts finden und muss dieses Problem wirklich lösen, um Ubuntu für meine Arbeit verwenden zu können ...

Danke für Ihre Hilfe.

BEARBEITEN:

Es scheint, dass meine virtuelle Umgebung aus irgendeinem Grund beschädigt wurde. Ich habe es deinstalliert.

Ich habe eine neu erstellt und die "pip install -r require.txt" erneut ausgeführt, und jetzt habe ich diesen Fehler:

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:

Der gccobige Fehler kann durch Installation des build-essentialPakets behoben werden .


Sie erhalten diesen Fehler, wenn Sie versuchen, ein Skript oder eine Wortspiel-Python-Periode auszuführen?
Seth

Es war beim Ausführen eines Skripts. Wie Sie sehen, habe ich die Frage gerade bearbeitet, mein Problem ist jetzt etwas anders.
Benjamin

Antworten:


3

Neben Standardbibliothek und Modulen von Drittanbietern verfügt Python auch über integrierte Module. Diese sind in C geschrieben und direkt in der ausführbaren Python-Datei verknüpft. Sie können herausfinden, wie diese sind:

$ 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 envfunktioniert durch Kopieren /usr/bin/python2.7in env/bin/pythonund anschließendes Verknüpfen aller Standardbibliotheksmodule in env/lib/python2.7/*.py.

Wenn Sie Ihr System-Python aktualisieren, erhalten Sie automatisch die aktualisierte Standardbibliothek in all Ihren virtuellen Umgebungen (weil Symlinks!), Aber Sie verwenden weiterhin die alte Kopie der ausführbaren Python-Datei. Dies bedeutet, dass Sie auch die alten Versionen der integrierten Module verwenden.

Einige Standardbibliotheksmodule hängen von integrierten Modulen ab. Und manchmal hängt die Standardbibliothek von Python 2.7 (x + 1) auch von den in Python 2.7 (x + 1) eingeführten Modulen ab. Wenn Sie eine alte virtuelle Umgebung verwenden, versuchen Sie tatsächlich, Python 2.7.x mit der Standardbibliothek von Python 2.7 (x + 1) zu verwenden, und manchmal bricht dies ab.

Das Neuerstellen der virtuellen Umgebung ist die richtige Lösung.

(Es ist wahrscheinlich ausreichend, die bin/pythonund bin/python2.7ausführbaren Dateien in der virtuellen Umgebung zu ersetzen , vorausgesetzt, dass im aktualisierten System Python keine neuen stdlib-Dateien angezeigt wurden.)


2

Sie müssen die Python-Version in Ihrer beschädigten virtuellen Umgebung ersetzen.

Mach das:

  1. Erstellen Sie eine neue Virtualenv

    mkvirtualenv MyNewTestEnv
    
  2. Suchen Sie "Python" (in meinem Fall befinden sich die virtuellen Envs im Home-Verzeichnis)

    cd ~/.virtualenvs/MyNewTestEnv/bin
    
  3. Kopieren Sie "Python" von der neuen virtuellen Umgebung in Ihre beschädigte virtuelle Umgebung

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

Das ist es. Jetzt sollte Ihr CorruptedEnv behoben sein.


1

Bitte beachten Sie, dass ich diese Antwort hinzufüge, um die Frage aus der unbeantworteten Warteschlange zu entfernen.

Wie Sie sich in Ihrer zweiten Bearbeitung vorschlagen,

Der obige gcc-Fehler kann durch Installieren des Build-Essential-Debian-Pakets behoben werden.


0

Sie müssen die virtuelle Umgebung nicht löschen.

Folgen Sie einfach diesen Schritten. Angenommen, Ihr virtueller Umgebungsname lautet "mydev".

1) virtualenv mydev

Der obige Befehl wird nur aktualisiert, ohne dass ein Paket verloren geht.

2) Wenn Ihr Pip außerhalb von virtualenv nicht funktioniert, wird das Problem durch "easy_install pip" behoben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.