Python-future: virtualenv + python-future = virtualenv roto

Creado en 20 may. 2015  ·  18Comentarios  ·  Fuente: PythonCharmers/python-future

Reproducción más 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.

Comentario más útil

Para Ubuntu 14.04, esta combinación funcionó para mí:

  • Instale pip para python 3.4 (https://pip.pypa.io/en/stable/installing/):
$ wget https://bootstrap.pypa.io/get-pip.py -O - | sudo python3.4
  • Reemplace el antiguo virtualenv (python 2.7 a python 3.4):
$ sudo pip3.4 install virtualenv
  • Solo para verificar:
$ head -n 1 /usr/local/bin/virtualenv
#!/usr/bin/python3
  • Ahora, se ejecutarán los siguientes comandos:
$ 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
  • Para evitar errores de compilación de las extensiones de Python escritas en C o C++ ( ref ):
$ 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

Ahora, tox funciona maravillosamente :)

Todos 18 comentarios

Este es un error en virtualenv ya que está confundiendo las rutas de los módulos 2.7 y 3.4. Hay varios problemas similares informados aguas arriba:
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

Es mejor usar pyvenv que viene con Python 3.3+ por ahora.

pyvenv no es realmente una opción para una base de código que apunta a 2+3 (especialmente considerando los muchos casos extremos para los que pyvenv no es del todo correcto (y no se puede arreglar debido a que está varado en stdlib)). ¿Habría alguna vez planes potenciales para dividir los bits útiles (backports, movimientos, etc.) del sombreado de los nombres de los módulos py3?

Gracias por mencionar esto, Antonio. Creo que tener una carpeta site-packages Python 2.7 accesible para un intérprete de Python 3.4 provocará muchas roturas en general. Así que estoy de acuerdo con Elliott en que este es un error de virtualenv. (Quizás un resurgimiento del error #673.)

Debo admitir que no he usado virtualenv durante 2 años (desde que descubrí conda). Trataré de encontrar algo de tiempo para jugar más con él para ver qué está pasando. Pero, leyendo https://github.com/pypa/virtualenv/pull/697 , sospecho que es un nido de pájaros de hacks frágiles...

¿Podrías abordar la pregunta? Probablemente esté bien cerrar como wontfix después de responder, supongo.

¿Habría alguna vez planes potenciales para dividir los bits útiles (backports, movimientos, etc.) del sombreado de los nombres de los módulos py3?

@qulogic @edschofield Esto es en realidad un efecto de la minería pythonpath que hacemos en nuestra empresa. Desde entonces lo hemos factorizado.

mung*

@bukzor en realidad no lo es, mira mi reproducción

Acabo de encontrarme con este problema, parece que se estaba introduciendo en virtualenv 12.04, comencé a fijar a virtualenv 12.02 sin problemas

fwiw, este es el compromiso que le permitió funcionar desde el lado de virtualenv: https://github.com/pypa/virtualenv/commit/73d46a83f6b26155398310d8dfd251015c751030

Sin embargo, se revirtió más tarde debido a que causó problemas (?) en Debian.

Creé mi propia secuencia de comandos contenedora para virtualenv que también resuelve este problema: https://github.com/asottile/virtualenv-hax

Tenía el mismo problema. Bajar de categoría a virtualenv 12.0.2 resolvió el problema.

Experimentando el mismo problema. Mi versión es 13.1.2. Tuve que bajar a 12.0.2 como mencionó valerymelou.

la degradación a 12.0.2 también funcionó para mí

¿Van a arreglar el error o qué?

Para Ubuntu 14.04, esta combinación funcionó para mí:

  • Instale pip para python 3.4 (https://pip.pypa.io/en/stable/installing/):
$ wget https://bootstrap.pypa.io/get-pip.py -O - | sudo python3.4
  • Reemplace el antiguo virtualenv (python 2.7 a python 3.4):
$ sudo pip3.4 install virtualenv
  • Solo para verificar:
$ head -n 1 /usr/local/bin/virtualenv
#!/usr/bin/python3
  • Ahora, se ejecutarán los siguientes comandos:
$ 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
  • Para evitar errores de compilación de las extensiones de Python escritas en C o C++ ( ref ):
$ 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

Ahora, tox funciona maravillosamente :)

Hola chicos, vi sus opiniones, y las recomendaciones de fernandojunior me funcionan, sin embargo, ahora actualizo mi virtualenv a 14.0.5 y los problemas se solucionaron en esta versión, actualmente estoy trabajando en mi host con linuxmint 17.3 x64

¿Qué hacer cuando se obtiene el mismo error pero se usan entornos conda?

Cerrando porque esta conversación se ha estancado y parece que no queda ninguna acción para python-future . Vuelva a abrir si puedo estar equivocado :)

¡si si! Esto se solucionó en el virtualenv

¿Fue útil esta página
0 / 5 - 0 calificaciones