Decidí cambiar de Windows a Linux, así que instalé Ubuntu Raring beta final.
Lamentablemente tengo un problema con Python.
Estaba tratando de usar pip
desde un virtualenv que creé, para instalar paquetes desde un requirements.txt
archivo como este:pip install -r requirements.txt
Recibí el siguiente error mientras se instalaba un paquete:
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
Encontré en internet que para deshacerme de esto, debería instalar el python-dev
paquete deb:
sudo apt-get install python-dev
Desde que instalé este paquete, tengo el siguiente error cuando intento ejecutar 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
¿Alguien tiene alguna idea? No puedo encontrar nada en Google, y realmente necesito resolver este problema para usar Ubuntu para mi trabajo ...
Gracias por tu ayuda.
EDITAR:
Parece que mi virtualenv fue corrompido por alguna razón. Lo desinstalé
Volví a crear uno y realicé el "pip install -r require.txt" nuevamente, y ahora tengo este error:
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:
El gcc
error anterior se puede solucionar instalando el build-essential
paquete.
fuente
Respuestas:
Además de la biblioteca estándar y los módulos de terceros, Python también tiene módulos integrados. Estos están escritos en C y están vinculados directamente en el ejecutable de Python. Puedes averiguar cómo son estos:
virtualenv env
funciona mediante la copia/usr/bin/python2.7
enenv/bin/python
, y luego enlazar simbólicamente todos los módulos de la biblioteca estándar enenv/lib/python2.7/*.py
.Cuando actualiza su sistema Python, obtiene automáticamente la biblioteca estándar actualizada en todos sus virtualenvs (¡porque enlaces simbólicos!), Pero todavía está usando la copia anterior del ejecutable de Python. Esto significa que también está utilizando las versiones anteriores de los módulos integrados.
Algunos módulos de biblioteca estándar dependen de módulos integrados. Y a veces la biblioteca estándar Python 2.7. (X + 1) depende de los módulos incorporados que también se introdujeron en Python 2.7. (X + 1). Al usar un viejo virtualenv, en realidad está tratando de usar Python 2.7.x con la biblioteca estándar de Python 2.7. (X + 1), y a veces esto se rompe.
Volver a crear el virtualenv es la solución correcta.
(Probablemente sea suficiente para reemplazar los archivos ejecutables
bin/python
ybin/python2.7
dentro del virtualenv, suponiendo que no aparecieron nuevos archivos stdlib en el sistema actualizado Python).fuente
Tienes que reemplazar la versión de Python en tu virtualenv corrupto.
Hacer esto:
Crea un nuevo Virtualenv
Localice "python" (en mi caso, los virtualenvs se encuentran en el directorio de inicio)
Copie "python" del nuevo virtualenv en su virtualenv corrupto
Eso es. Ahora su CorruptedEnv debería estar reparado.
fuente
Tenga en cuenta que agrego esta respuesta para sacar la pregunta de la cola sin respuesta.
Como te sugieres en tu segunda edición,
fuente
No necesita eliminar el entorno virtual.
Solo sigue estos pasos. supongamos que el nombre de su entorno virtual es "mydev"
1) virtualenv mydev
El comando anterior solo se actualiza sin perder ningún paquete.
2) fuera de virtualenv, si su pip no funciona, entonces solo "easy_install pip" resolverá el problema
fuente