Decidi mudar do Windows para o Linux, então instalei o Ubuntu Raring beta final.
Infelizmente eu tenho um problema em Python.
Eu estava tentando usar pip
de um virtualenv que criei para instalar pacotes de um requirements.txt
arquivo como este:pip install -r requirements.txt
Eu recebi o seguinte erro enquanto um pacote estava sendo instalado:
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
Achei na internet que, para me livrar disso, eu deveria instalar o python-dev
pacote deb:
sudo apt-get install python-dev
Desde que instalei este pacote, tenho o seguinte erro ao tentar executar um 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
Alguém tem alguma ideia? Não consigo encontrar nada no Google, e realmente preciso resolver esse problema para usar o Ubuntu no meu trabalho ...
Obrigado pela ajuda.
EDITAR:
Parece que meu virtualenv foi corrompido por algum motivo. Eu o desinstalei.
Recriei um e executei o "pip install -r requirements.txt" novamente e agora tenho este erro:
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:
O gcc
erro acima pode ser corrigido instalando o build-essential
pacote.
fonte
Respostas:
Além da biblioteca padrão e dos módulos de terceiros, o Python também possui módulos internos. Eles são escritos em C e vinculados diretamente no executável do Python. Você pode descobrir como são estes:
virtualenv env
funciona copiando e,/usr/bin/python2.7
emenv/bin/python
seguida, vinculando todos os módulos de biblioteca padrãoenv/lib/python2.7/*.py
.Quando você atualiza o sistema Python, você obtém automaticamente a biblioteca padrão atualizada em todos os seus virtualenvs (porque links simbólicos!), Mas ainda está usando a cópia antiga do executável Python. Isso significa que você também está usando as versões antigas dos módulos internos.
Alguns módulos de biblioteca padrão dependem dos módulos internos. E às vezes a biblioteca padrão do Python 2.7. (X + 1) depende dos módulos internos que foram introduzidos no Python 2.7. (X + 1) também. Usando um virtualenv antigo, você está realmente tentando usar o Python 2.7.x com a biblioteca padrão do Python 2.7. (X + 1), e às vezes isso é interrompido.
Recriar o virtualenv é a solução correta.
(Provavelmente é suficiente substituir os executáveis
bin/python
ebin/python2.7
dentro do virtualenv, supondo que nenhum novo arquivo stdlib apareça no sistema atualizado Python.)fonte
Você precisa substituir a versão python no seu virtualenv corrompido.
Faça isso:
Crie um novo Virtualenv
Localize "python" (no meu caso, os virtualenvs estão localizados no diretório inicial)
Copie "python" do novo virtualenv para o seu virtualenv corrompido
É isso aí. Agora seu CorruptedEnv deve ser corrigido.
fonte
Observe que eu adiciono esta resposta para tirar a pergunta da fila sem resposta.
Como você sugere em sua segunda edição,
fonte
você não precisa excluir o ambiente virtual.
Basta seguir estes passos. digamos que seu nome de ambiente virtual seja "mydev"
1) virtualenv mydev
O comando acima apenas atualiza sem perder nenhum pacote.
2) fora do virtualenv, se o seu pip não estiver funcionando, apenas "easy_install pip" resolverá o problema
fonte