Usando virtualenv, ejecuto mis proyectos con la versión por defecto de Python (2.7). En un proyecto, necesito usar Python 3.4.
He utilizado brew install python3
para instalarlo en mi Mac. Ahora, ¿cómo puedo crear un virtualenv que utilice la nueva versión?
Por ejemplo, sudo virtualenv envPython3
Si lo intento:
virtualenv -p python3 test
Obtengo:
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python3/3.4.0_1/Frameworks/Python.framework/Versions/3.4'
New python executable in test/bin/python3.4
Also creating executable in test/bin/python
Failed to import the site module
Traceback (most recent call last):
File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/site.py", line 67, in <module>
import os
File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/os.py", line 634, in <module>
from _collections_abc import MutableMapping
ImportError: No module named '_collections_abc'
ERROR: The executable test/bin/python3.4 is not functioning
ERROR: It thinks sys.prefix is '/Users/user/Documents/workspace/test' (should be '/Users/user/Documents/workspace/test/test')
ERROR: virtualenv is not compatible with this system or executable
simplemente correr
virtualenv -p python3 envname
Actualizar después de OP's editar:
Había un error en la versión del OP's de virtualenv, como se describe aquí. El problema se solucionó ejecutando:
pip install --upgrade virtualenv
Python 3 tiene un soporte incorporado para entornos virtuales - venv. Podría ser mejor usar eso en su lugar. Refiriéndose a los docs:
La creación de entornos virtuales se hace ejecutando el script pyvenv script:
pyvenv /ruta/para/nuevo/entorno/virtual
.
Actualización para Python 3.6 y posteriores:
Como pawciobiel correctamente comenta, pyvenv
está obsoleto a partir de Python 3.6 y la nueva forma es:
python3 -m venv /path/to/new/virtual/environment
Además de las otras respuestas, recomiendo comprobar qué instancia de virtualenv estás ejecutando:
which virtualenv
Si esto muestra algo en /usr/local/bin, entonces es posible - incluso probable - que haya instalado virtualenv (posiblemente usando una instancia de easy_tools o pip) sin usar el gestor de paquetes de su sistema (brew en el caso de OP). Este fue mi problema.
Hace años - cuando era aún más ignorante - había instalado virtualenv y estaba enmascarando el virtualenv proporcionado por mi sistema.
Después de eliminar este viejo y roto virtualenv, mis problemas desaparecieron.