J'ai décidé de passer de Windows à Linux, j'ai donc installé la version bêta finale d'Ubuntu Raring.
Malheureusement, j'ai un problème avec Python.
J'essayais d'utiliser à pip
partir d'un virtualenv que j'avais créé, pour installer des packages à partir d'un requirements.txt
fichier comme celui-ci:pip install -r requirements.txt
J'ai eu l'erreur suivante lors de l'installation d'un package:
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
J'ai trouvé sur internet que pour m'en débarrasser, je devrais installer le python-dev
paquet deb:
sudo apt-get install python-dev
Depuis que j'ai installé ce package, j'ai l'erreur suivante lorsque j'essaie d'exécuter un 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
est-ce que quelqu'un a une idée? Je ne trouve rien sur Google et j'ai vraiment besoin de résoudre ce problème afin d'utiliser Ubuntu pour mon travail ...
Merci de votre aide.
ÉDITER:
Il semble que mon virtualenv ait été corrompu pour une raison quelconque. Je l'ai désinstallé.
J'en ai recréé un et j'ai exécuté à nouveau "pip install -r requirements.txt", et maintenant j'ai cette erreur:
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:
L' gcc
erreur ci-dessus peut être corrigée en installant le build-essential
package.
la source
Réponses:
En plus de la bibliothèque standard et des modules tiers, Python a également des modules intégrés. Celles-ci sont écrites en C et sont liées directement dans l'exécutable Python. Vous pouvez découvrir à quoi cela ressemble:
virtualenv env
fonctionne en copiant/usr/bin/python2.7
dansenv/bin/python
et ensuite un lien symbolique tous les modules de la bibliothèque standard dansenv/lib/python2.7/*.py
.Lorsque vous mettez à niveau votre système Python, vous obtenez automatiquement la bibliothèque standard mise à jour dans tous vos virtualenvs (parce que les liens symboliques!), Mais vous utilisez toujours l'ancienne copie de l'exécutable Python. Cela signifie que vous utilisez également les anciennes versions des modules intégrés.
Certains modules de bibliothèque standard dépendent de modules intégrés. Et parfois, la bibliothèque standard Python 2.7. (X + 1) dépend des modules intégrés qui ont également été introduits dans Python 2.7. (X + 1). En utilisant un ancien virtualenv, vous essayez en fait d'utiliser Python 2.7.x avec la bibliothèque standard de Python 2.7. (X + 1), et parfois cela casse.
Recréer le virtualenv est la bonne solution.
(Il suffit probablement de remplacer les exécutables
bin/python
etbin/python2.7
dans le virtualenv, en supposant qu'aucun nouveau fichier stdlib ne soit apparu dans le système Python mis à jour.)la source
Vous devez remplacer la version python dans votre virtualenv corrompu.
Faites ceci:
Créer un nouveau Virtualenv
Localisez "python" (dans mon cas, les virtualenvs sont situés dans le répertoire personnel)
Copiez "python" du nouveau virtualenv dans votre virtualenv corrompu
C'est ça. Maintenant, votre CorruptedEnv devrait être corrigé.
la source
Veuillez noter que j'ajoute cette réponse pour retirer la question de la file d'attente sans réponse.
Comme vous le suggérez dans votre deuxième édition,
la source
vous n'avez pas besoin de supprimer l'environnement virtuel.
Suivez simplement ces étapes. disons que le nom de votre environnement virtuel est "mydev"
1) virtualenv mydev
La commande ci-dessus vient de mettre à niveau sans perdre aucun package.
2) en dehors de virtualenv, si votre pip ne fonctionne pas, alors juste "easy_install pip" résoudra le problème
la source