Reproduction la plus simple :
$ 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.
Il s'agit d'un bogue dans virtualenv
car il embrouille les chemins des modules 2.7 et 3.4. Plusieurs problèmes similaires ont été signalés en amont :
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
Mieux vaut utiliser pyvenv
fourni avec Python 3.3+ pour le moment.
pyvenv n'est pas vraiment une option pour une base de code ciblant 2 + 3 (en particulier compte tenu des nombreux cas de bord pour lesquels pyvenv n'est pas tout à fait correct (et ne peut pas être corrigé car il est bloqué dans la stdlib)). Y aurait-il un jour des plans potentiels pour séparer les éléments utiles (rétroportages, déplacements, etc.) de l'occultation des noms de modules py3 ?
Merci de le mentionner, Antoine. Je pense qu'avoir un dossier Python 2.7 site-packages
accessible à un interpréteur Python 3.4 entraînera beaucoup de casse en général. Je suis donc d'accord avec Elliott qu'il s'agit d'un bogue virtualenv. (Peut-être un resurfaçage du bug #673.)
Je dois avouer que je n'ai pas utilisé virtualenv depuis 2 ans (depuis que j'ai découvert conda). Je vais essayer de trouver un peu de temps pour bricoler davantage pour voir ce qui se passe. Mais, en lisant https://github.com/pypa/virtualenv/pull/697 , je soupçonne plutôt que c'est un nid d'oiseau de hacks cassants ...
Pourriez-vous répondre à la question? Probablement bien de fermer car wontfix après avoir répondu, je suppose.
Y aurait-il un jour des plans potentiels pour séparer les éléments utiles (rétroportages, déplacements, etc.) de l'occultation des noms de modules py3 ?
@qulogic @edschofield C'est en fait un effet de l'extraction de pythonpath que nous effectuons dans notre entreprise. Nous l'avons depuis pris en compte.
munging*
@bukzor ce n'est en fait pas, voir ma reproduction
Je viens de rencontrer ce problème, on dirait qu'il a été introduit dans virtualenv 12.04, j'ai commencé à épingler à virtualenv 12.02 sans problèmes
fwiw, c'est le commit qui lui a permis de fonctionner du côté de virtualenv : https://github.com/pypa/virtualenv/commit/73d46a83f6b26155398310d8dfd251015c751030
Il a cependant été annulé plus tard en raison de problèmes (?) sur Debian.
J'ai créé mon propre script wrapper pour virtualenv qui résout également ce problème : https://github.com/asottile/virtualenv-hax
Avait le même problème. La rétrogradation vers virtualenv 12.0.2 a résolu le problème.
Vivre le même problème. Ma version est 13.1.2. J'ai dû rétrograder à 12.0.2 comme l'a mentionné valerymelou.
la rétrogradation vers 12.0.2 a fonctionné pour moi aussi
Vont-ils corriger le bug ou quoi ?
Pour Ubuntu 14.04, cette combinaison a fonctionné pour moi :
$ 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
Maintenant, tox fonctionne à merveille :)
Salut les gars, j'ai vu vos opinions, et les recommandations de fernandojunior fonctionnent pour moi, mais maintenant je mets à jour mon virtualenv à 14.0.5 et les problèmes sont résolus dans cette version, actuellement je travaille dans mon hôte avec linuxmint 17.3 x64
Que faire lorsque vous obtenez la même erreur mais que vous utilisez des environnements conda ?
Clôture car cette conversation est au point mort et il ne semble plus y avoir d'action restante pour python-future
. Merci de rouvrir si je peux me tromper :)
Oui oui! Cela a été contourné dans le virtualenv
Commentaire le plus utile
Pour Ubuntu 14.04, cette combinaison a fonctionné pour moi :
Maintenant, tox fonctionne à merveille :)