12.04 LTS: atualizando para o Python3.4 broke pip, easy_install e virtualenv

-1

então depois de muito aborrecimento e heartbrake eu consegui atualizar meu Python3.2 para o Python3.4 no Ubuntu 12.04 LTS. Eu segui este método simples:

link

pareceu fazer o truque, executando 'python' como um comando me leva para um shell Python3.4 em vez da versão mais antiga. ótimo.

apenas agora estou tendo alguns problemas. A razão pela qual eu queria mudar para o 3.4 era obter uma versão mais nova do mysql.connector do Python, versão 2.0.0 ou superior, que requer 3.4. Mas depois que eu instalei o 3.4 easy_install, pip e virtualenv (e provavelmente muitos outros) quebraram, e parece ser algum tipo de problema de versionamento pela aparência dele. heres algumas saídas de erro:

pip

(without typing out the whole thing, heres the last two lines)
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 584, in resolve 
 raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pip==7.1.0


easy_install

File "/usr/lib/python3/dist-packages/pkg_resources.py", line 584, in resolve
 raise raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: distribute==0.06.24dev-r0


virtualenv

File "/usr/lib/python3/dist-packages/pkg_resources.py", line 584, in resolve
 raise raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: virtualenv==13.1.0

Alguém sabe por que isso aconteceu? e você pode me guiar através de uma solução?

obrigado!

    
por ThriceGood 05.08.2015 / 12:05

1 resposta

3

O final desse tutorial é muito ruim. Aqui está o que diz:

rm /usr/local/bin/python  
ln -s /usr/local/bin/python3.3 /usr/local/bin/python

Isso significa que o sistema global Python é alterado para 3.3. De acordo com meu comentário anterior, isso causará muito mais danos do que apenas quebrar seu ambiente de desenvolvimento. O Python 2 e 3 não são compatíveis e possuem diferentes dependências (que também não são compatíveis). O Ubuntu usa muito Python para coisas do sistema. Vai quebrar o Ubuntu.

Então, comece removendo esse link simbólico:

sudo rm /usr/local/bin/python

Em seguida, verifique se which python e python retornam algo sensato. Você está procurando por um mapeamento para 2. o que quer que seja.

Para realizar o que você realmente quer, você precisa usar um virtualenv / venv. Isso copia qualquer versão do Python que você queira através de um ambiente especial. Você "ativa" esse ambiente e altera seu tempo de execução PATH para encontrar a versão do Python que você usou ao criar o veiculo.

python3 -m venv venv
. venv/bin/activate  # activates it
which python  # should return /path/to/venv/bin/python

Se você tiver problemas com ensurepip ao executar o módulo venv (um problema conhecido em 14.04 que pode não afetar você), a correção que eu uso :

wget -qO- http://d.pr/f/YqS5+ \
| sudo tar xzf - -C $(python3 -c "import sys; print(sys.path[1])") --no-same-owner

Isto é projetado para 14.04, então, novamente, pode quebrar tudo relacionado ao python3.

    
por Oli 05.08.2015 / 12:56