Pregunta Usando Python 3 en virtualenv


Utilizando virtualenv, Ejecuto mis proyectos con la versión predeterminada de Python (2.7). En un proyecto, necesito usar Python 3.4.

solía brew install python3 para instalarlo en mi Mac. Ahora, ¿cómo creo un virtualenv que use la nueva versión?

p.ej. sudo virtualenv envPython3

Si intento:

virtualenv -p python3 test

Yo 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

512
2018-05-24 08:05


origen


Respuestas:


simplemente ejecuta

virtualenv -p python3 envname

Actualización después de la edición de OP:

Hubo un error en la versión de Virtualenv del OP, como se describe aquí. El problema se corrigió ejecutando:

pip install --upgrade virtualenv

902
2018-05-24 08:11



Python 3 tiene un soporte integrado para entornos virtuales - Venv. Puede ser mejor usar eso en su lugar. En referencia a los documentos:

La creación de entornos virtuales se realiza ejecutando pyvenv   guión:

pyvenv /path/to/new/virtual/environment

Actualización para Python 3.6 y más reciente:

Como pawciobiel correctamente comentarios, pyvenv es obsoleto a partir de Python 3.6 y la nueva forma es:

python3 -m venv /path/to/new/virtual/environment

151
2018-05-14 09:09



Instalar requisitos previos.

sudo apt-get install python3 python3-pip virtualenvwrapper

Crear un entorno virtual basado en Python3. Opcionalmente habilitar --system-site-packages bandera.

mkvirtualenv -p /usr/bin/python3 <venv-name>

Establecer en el entorno virtual.

workon <venv-name>

Instale otros requisitos usando pip gerente de empaquetación.

pip install -r requirements.txt
pip install <package_name>

Cuando se trabaja en múltiples proyectos de python simultáneamente, generalmente se recomienda instalar paquetes comunes como pdbpp globalmente y luego reutilizarlos en virtualenvs.

El uso de esta técnica ahorra mucho tiempo dedicado a buscar paquetes e instalarlos, además de consumir un mínimo de espacio en disco y ancho de banda de red.

sudo -H pip3 -v install pdbpp
mkvirtualenv -p $(which python3) --system-site-packages <venv-name>

Instrucciones específicas de Django

Si hay muchos paquetes de python en todo el sistema, se recomienda no usar --system-site-packages bandera especialmente durante el desarrollo ya que he notado que ralentiza mucho el inicio de Django. Supongo que la inicialización del entorno de Django es escanear manualmente y agregar todos los paquetes del sitio desde la ruta del sistema, que podría ser el motivo. Incluso python manage.py shell se vuelve muy lento

Habiendo dicho eso, la opción que funciona mejor. Podría ser seguro omitir --system-site-packages bandera para proyectos de Django.


43
2018-03-19 00:36



Lo he intentado Pyenv y es muy útil para cambiar las versiones de Python (global, local en la carpeta o en el virtualenv):

brew install pyenv

luego instala la versión de Python que quieras:

pyenv install 3.5.0

y simplemente crea virtualenv con la ruta a la versión de intérprete necesaria:

virtualenv -p /Users/johnny/.pyenv/versions/3.5.0/bin/python3.5 myenv

Eso es todo, comprueba la versión:

. ./myenv/bin/activate && python -V

También hay un complemento para pyenv pyenv-virtualenv pero no funcionó para mí de alguna manera.


37
2017-09-19 20:38



virtualenv --python=/usr/bin/python3 <name of env>

trabajó para mi.


29
2017-12-22 14:21



Puedes especificar específicos Versión de Python mientras creas ambiente.
Se menciona en virtualenv.py 

virtualenv --python=python3.5 envname

Cómo -p trabajos

parser.add_option(
    '-p', '--python',
    dest='python',
    metavar='PYTHON_EXE',
    help='The Python interpreter to use, e.g., --python=python3.5 will use the python3.5 '
    'interpreter to create the new environment.  The default is the interpreter that '
    'virtualenv was installed with (%s)' % sys.executable)

9
2018-02-08 08:51



Python ahora viene con su propia implementación de entorno virtual, con el nombre de "venv". Sugeriría usar eso, en lugar de virtualenv.

Citando de venv - docs,

Obsoleto desde la versión 3.6: pyvenv fue la herramienta recomendada para   creando entornos virtuales para Python 3.3 y 3.4, y es   obsoleto en Python 3.6.

Modificado en la versión 3.5: El uso de venv ahora se recomienda para   creando entornos virtuales.

Para windows, para iniciar venv en algún proyecto, abra cmd:

python -m venv "c:\path\to\myenv"

(Sugeriría usar comillas dobles en la ruta del directorio si contiene espacios. Ej: "C: / My Dox / Spaced Directory / Something")

Una vez que venv esté configurado, verá algunas carpetas nuevas dentro del directorio de su proyecto. Uno de ellos sería "Scripts".

Para activar o invocar a VVV necesitas:

C:\> <venv>\Scripts\activate.bat

Puede desactivar un entorno virtual escribiendo "desactivar" en su shell. Con esto, ahora está listo para instalar sus bibliotecas específicas de proyecto, que residirán en la carpeta "Lib".

============================= Editar 1 ================ ==================== El escenario que se analizará a continuación no es lo que se solicitó originalmente, simplemente agregando esto en caso de que alguien use vscode con la extensión de Python

En caso de que use el código vs con su extensión python, es posible que se enfrente a un problema con su pylint que apunta a la instalación global. En este caso, pylint no podrá ver los módulos que están instalados en su entorno virtual y, por lo tanto, mostrará errores durante la importación.

aquí es un método simple para superar esto.

cd Workspace\Scripts
.\Activate.ps1
code .

Básicamente estamos activando el entorno primero y luego invocando el código vs para que pilylint comience dentro del entorno y pueda ver todos los paquetes locales.


7
2018-02-16 13:19



Además de las otras respuestas, le recomiendo verificar qué instancia de virtualenv está ejecutando:

which virtualenv

Si esto aparece 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 administrador 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 ocultando el virtualenv proporcionado por mi sistema.

Después de eliminar este virtualenv viejo y roto, mis problemas desaparecieron.


6
2018-06-21 16:32