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 pip
einer von mir erstellten virtuellen Umgebung Pakete aus einer requirements.txt
Datei 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-dev
Deb-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 gcc
obige Fehler kann durch Installation des build-essential
Pakets behoben werden .
quelle
Antworten:
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:
virtualenv env
funktioniert durch Kopieren/usr/bin/python2.7
inenv/bin/python
und anschließendes Verknüpfen aller Standardbibliotheksmodule inenv/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/python
undbin/python2.7
ausführbaren Dateien in der virtuellen Umgebung zu ersetzen , vorausgesetzt, dass im aktualisierten System Python keine neuen stdlib-Dateien angezeigt wurden.)quelle
Sie müssen die Python-Version in Ihrer beschädigten virtuellen Umgebung ersetzen.
Mach das:
Erstellen Sie eine neue Virtualenv
Suchen Sie "Python" (in meinem Fall befinden sich die virtuellen Envs im Home-Verzeichnis)
Kopieren Sie "Python" von der neuen virtuellen Umgebung in Ihre beschädigte virtuelle Umgebung
Das ist es. Jetzt sollte Ihr CorruptedEnv behoben sein.
quelle
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,
quelle
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
quelle