Reprodução mais simples:
$ virtualenv venv
$ ./venv/bin/pip install future virtualenv
Collecting future
Using cached future-0.14.3.tar.gz
Collecting virtualenv
Using cached virtualenv-12.1.1-py2.py3-none-any.whl
Installing collected packages: future, virtualenv
Running setup.py install for future
Successfully installed future-0.14.3 virtualenv-12.1.1
$ ./venv/bin/virtualenv -ppython3.4 venv34
Running virtualenv with interpreter /usr/bin/python3.4
Traceback (most recent call last):
File "/home/anthony/venv/local/lib/python2.7/site-packages/virtualenv.py", line 8, in <module>
import base64
File "/usr/lib/python3.4/base64.py", line 9, in <module>
import re
File "/usr/lib/python3.4/re.py", line 336, in <module>
import copyreg
File "/home/anthony/venv/lib/python2.7/site-packages/copyreg/__init__.py", line 7, in <module>
raise ImportError('This package should not be accessible on Python 3. '
ImportError: This package should not be accessible on Python 3. Either you are trying to run from the python-future src folder or your installation of python-future is corrupted.
Este é um bug em virtualenv
, pois está confundindo os caminhos dos módulos 2.7 e 3.4. Há vários problemas semelhantes relatados upstream:
https://github.com/pypa/virtualenv/issues/745
https://github.com/pypa/virtualenv/issues/671
https://github.com/pypa/virtualenv/issues/625
https://github.com/pypa/virtualenv/pull/697
Melhor usar pyvenv
que vem com o Python 3.3+ por enquanto.
pyvenv não é realmente uma opção para uma base de código direcionada a 2 + 3 (especialmente considerando os muitos casos de borda para os quais o pyvenv não é muito correto (e não pode ser corrigido devido a estar preso no stdlib)). Haveria planos potenciais para dividir os bits úteis (backports, movimentos, etc.) do sombreamento dos nomes dos módulos py3?
Obrigado por mencionar isso, Antônio. Acho que ter uma pasta Python 2.7 site-packages
acessível a um interpretador Python 3.4 levará a muitas quebras em geral. Então eu concordo com Elliott que este é um bug virtualenv. (Talvez um ressurgimento do bug #673.)
Devo admitir que não uso virtualenv há 2 anos (desde que descobri o conda). Vou tentar encontrar algum tempo para mexer com ele ainda mais para ver o que está acontecendo. Mas, lendo https://github.com/pypa/virtualenv/pull/697 , eu suspeito que seja um ninho de pássaros de hacks frágeis ...
Você poderia abordar a questão? Provavelmente não há problema em fechar, pois não será corrigido depois de responder, eu acho.
Haveria planos potenciais para dividir os bits úteis (backports, movimentos, etc.) do sombreamento dos nomes dos módulos py3?
@qulogic @edschofield Isso é realmente um efeito da mineração pythonpath que fazemos em nossa empresa. Nós já fatoramos isso.
mastigando*
@bukzor na verdade não, veja minha reprodução
Acabei de me deparar com esse problema, parece que estava sendo introduzido no virtualenv 12.04, comecei a fixar no virtualenv 12.02 sem problemas
fwiw, este é o commit que permitiu que funcionasse do lado do virtualenv: https://github.com/pypa/virtualenv/commit/73d46a83f6b26155398310d8dfd251015c751030
No entanto, foi revertido mais tarde devido a problemas (?) no debian.
Eu criei meu próprio script wrapper para virtualenv que também resolve esse problema: https://github.com/asottile/virtualenv-hax
Teve o mesmo problema. O downgrade para o virtualenv 12.0.2 resolveu o problema.
Vivenciando o mesmo problema. Minha versão é 13.1.2. Tive que fazer o downgrade para 12.0.2 como valerymelou mencionou.
downgrade para 12.0.2 funcionou para mim também
Eles vão corrigir o bug ou o quê?
Para o Ubuntu 14.04, esta combinação funcionou para mim:
$ wget https://bootstrap.pypa.io/get-pip.py -O - | sudo python3.4
$ sudo pip3.4 install virtualenv
$ head -n 1 /usr/local/bin/virtualenv
#!/usr/bin/python3
$ virtualenv venv34
Using base prefix '/usr'
New python executable in venv34/bin/python3
Also creating executable in venv34/bin/python
Installing setuptools, pip, wheel...done.
$ ./venv34/bin/pip install virtualenv
Collecting virtualenv
Using cached virtualenv-13.1.2-py2.py3-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv-13.1.2
$ ./venv34/bin/virtualenv -p python venv
Running virtualenv with interpreter /usr/bin/python
New python executable in venv/bin/python
Installing setuptools, pip, wheel...done.
$ /usr/bin/python --version
Python 2.7.6
$ ./venv/bin/pip install future virtualenv
Collecting future
Collecting virtualenv
Using cached virtualenv-13.1.2-py2.py3-none-any.whl
Installing collected packages: future, virtualenv
Successfully installed future-0.15.2 virtualenv-13.1.2
$ ./venv34/bin/pip install future
Collecting future
Installing collected packages: future
Successfully installed future-0.15.2
$ sudo apt-get update
$ sudo apt-get install -y build-essential
$ sudo apt-get install -y python3.4-dev
$ sudo apt-get install -y python3-software-properties
Agora, o tox funciona lindamente :)
Oi pessoal eu vi suas opiniões, e as recomendações de fernandojunior funcionam para mim, mas agora atualizo meu virtualenv para 14.0.5 e os problemas são corrigidos nesta versão, atualmente estou trabalhando no meu host com linuxmint 17.3 x64
O que fazer ao obter o mesmo erro, mas usando ambientes conda?
Fechando porque esta conversa parou e parece não haver nenhuma ação restante para python-future
. Por favor, reabra se posso estar enganado :)
sim Sim! Isso foi resolvido no projeto virtualenv
Comentários muito úteis
Para o Ubuntu 14.04, esta combinação funcionou para mim:
Agora, o tox funciona lindamente :)