for error empty create python django shell virtualenv pycharm

python - error - ¿Cómo activo un virtualenv dentro de la terminal de PyCharm?



python 2.7 interpreter pycharm (20)

Acabo de agregar un script llamado pycharmactivate a mi directorio personal. Establecer el valor de PyCharm (4.0.1) Archivo> Configuraciones> Herramientas> Terminal> Ruta del shell a / bin / bash --rcfile ~ / pycharmactivate. Tal vez no sea la mejor solución en caso de que tenga diferentes directorios y nombres de proyectos y virtualenv, pero a mí me funciona. Este script contiene las siguientes 3 líneas y asume que su virtualenv tiene el mismo nombre que su directorio de proyecto.

source ~/.bashrc projectdir=${PWD##*/} source ~/.virtualenvs/$projectdir/bin/activate

Configuré PyCharm, creé mi virtualenv (a través del comando virtual env o directamente en PyCharm) y activé ese entorno como mi intérprete. Todo está funcionando bien.

Sin embargo, si abro un terminal usando "Herramientas, Abrir Terminal", el prompt de shell proporcionado no usa el env virtual; Todavía tengo que usar source ~/envs/someenv/bin/activate dentro de ese Terminal para activarlo.

Otro método es activar el entorno en un shell y ejecutar PyCharm desde ese entorno. Esto es "factible" pero bastante feo, y significa que tengo grandes problemas si cambio entornos o proyectos de PyCharm: ahora estoy usando un entorno totalmente erróneo.

¿Hay alguna otra forma, mucho más sencilla, de tener "Herramientas, Abrir Terminal" para activar automáticamente el entorno virtual?


Basado en las respuestas de Peter y la experimentación, he encontrado una buena "solución general", que resuelve lo siguiente:

  • Restaura el comportamiento de un shell de inicio de sesión. PyCharm normalmente ejecuta un shell de inicio de sesión, pero --rcfile detuvo esto. El script todavía usa --rcfile, pero intenta emular el comportamiento INVOCATION de un shell de inicio de sesión.
  • Elimina la necesidad de crear un archivo de registro para cada entorno
  • Elimina la necesidad de actualizar la configuración del proyecto si cambia el entorno.

Coloque esta secuencia de comandos en un directorio bin en alguna parte. Por ejemplo ~ / bin / pycharmactivate

if [ -r "/etc/profile" ] ; then . /etc/profile ; fi if [ -r "~/.bash_profile" ] ; then . ~/.bash_profile elif [ -r "~/.bash_login" ] ; then . ~/.bash_login elif [ -r "~/.profile" ] ; then . ~/.profile fi ACTIVATERC=`cat .idea/workspace.xml | perl -n -e ''print "/$1/bin/activate" if m:option name="SDK_HOME" value="///$USER_HOME///$(.*)/bin/python":''` if [ -n "$ACTIVATERC" ] ; then . "$HOME/$ACTIVATERC" ; else echo "Could not find virtualenv from PyCharm" ; fi

Luego configure la ruta de Shell de PyCharm a:

/bin/bash --rcfile ~/bin/pycharmactivate


Este método debería funcionar con entornos virtuales arbitrarios por proyecto y no hace suposiciones en su entorno, ya que utiliza los enlaces que crea.

Usted escribe:

  • Un script global que invoca el gancho
  • Un script hook por proyecto PyCharm (no obligatorio)

Dado que el último PyCharm actual (Comunidad 2016.1) no permite la configuración del Terminal por proyecto, comience con el script que invoca el enlace específico del proyecto. Este es mi ~/.pycharmrc :

if [ -r ".pycharm/term-activate" ]; then echo "Terminal activation hook detected." echo "Loading Bash profile..." source ~/.bash_profile echo "Activating terminal hook..." source ".pycharm/term-activate" source activate $PYCHARM_VENV fi

Si está utilizando algo distinto de Bash, invoque su propio equivalente .bash_profile si lo desea.

Ahora configure su PyCharm "Herramientas -> Terminal -> Ruta del Shell" para invocar este script, por ejemplo: /bin/bash --rcfile ~/.pycharmrc

Finalmente, para cada proyecto de PyCharm necesita que se active un entorno virtual específico, cree un archivo dentro del proyecto raíz PyCharm .pycharm/term-activate . Este es su gancho y simplemente definirá el nombre del entorno virtual deseado para su proyecto PyCharm:

export PYCHARM_VENV=<your-virtual-env-name>

Por supuesto, puede ampliar sus ganchos con cualquier cosa que encuentre útil en el entorno de la terminal de su proyecto particular de PyCharm.


Gracias Chris, tu script funcionó para algunos proyectos, pero no todos en mi máquina. Aquí hay un script que escribí y espero que alguien lo encuentre útil.

#Stored in ~/.pycharmrc ACTIVATERC=$(python -c ''import re import os from glob import glob try: #sets Current Working Directory to _the_projects .idea folder os.chdir(os.getcwd()+"/.idea") #gets every file in the cwd and sets _the_projects iml file for file in glob("*"): if re.match("(.*).iml", file): project_iml_file = file #gets _the_virtual_env for _the_project for line in open(project_iml_file): env_name = re.findall("~/(.*)/" jdkType", line.strip()) # created or changed a virtual_env after project creation? this will be true if env_name: print env_name[0] + "/bin/activate" break inherited = re.findall("type=/"inheritedJdk/"", line.strip()) # set a virtual_env during project creation? this will be true if inherited: break # find _the_virtual_env in misc.xml if inherited: for line in open("misc.xml").readlines(): env_at_project_creation = re.findall("/~/(.*)/" project-jdk", line.strip()) if env_at_project_creation: print env_at_project_creation[0] + "/bin/activate" break finally: pass '') if [ "$ACTIVATERC" ] ; then . "$HOME/$ACTIVATERC" ; fi


He visto todas las respuestas anteriores, pero ninguna de ellas es lo suficientemente elegante para mí. En Pycharm 2017.1.3 (en mi computadora), la manera más fácil es abrir Settings->Tools->Terminal y verificar la Shell integration y Activate virtualenv opciones de Activate virtualenv .


Otra alternativa es usar virtualenvwrapper para administrar sus entornos virtuales. Parece que una vez que el script virtualenvwrapper está activado , pycharm puede usarlo y luego el comando simple workon estará disponible desde la consola de pycharm y le presentará los entornos virtuales disponibles:

kevin@debian:~/Development/django-tutorial$ workon django-tutorial FlaskHF SQLAlchemy themarkdownapp kevin@debian:~/Development/django-tutorial$ workon django-tutorial (django-tutorial)kevin@debian:~/Development/django-tutorial$


Para los entornos virtuales conda en Windows, asegúrese de que su archivo por lotes NO se llame activate.bat ya que esto provocará un conflicto con el comando conda activate , lo que provocará una llamada recursiva del archivo por lotes.

Lo que funciona para mí es la siguiente ruta de Shell:

"cmd.exe" /k ""C:/FullPathToYourProject/activate-env.bat""

Y en el archivo activate-env.bat:

call activate myenvname


Para los usuarios de Windows cuando usan PyCharm y un entorno virtual en Windows, puede usar el parámetro / k en cmd.exe para configurar el entorno virtual automáticamente.

Vaya a Configuración, Terminal, Shell predeterminado y agregue /K <path-to-your-activate.bat> .

No tengo la reputación de comentar sobre la respuesta anterior, por lo que publicamos esta versión corregida. Esto realmente ahorra MUCHO tiempo.


Para usuarios de Windows: al usar PyCharm con un entorno virtual, puede usar el parámetro /K a cmd.exe para configurar el entorno virtual automáticamente.

PyCharm 3 o 4: Settings , Terminal , Default shell y add /K <path-to-your-activate.bat> .

PyCharm 5: Settings , Tools , Terminal y agrega /K <path-to-your-activate.bat> a la Shell path .

PyCharm 2016.1 o 2016.2: Settings , Tools , Terminal , y agregue ""/K <path-to-your-activate.bat>"" a la Shell path y añada ( ""/K <path-to-your-activate.bat>"" cuenta las comillas). También agregue comillas alrededor de cmd.exe, lo que da como resultado:

"cmd.exe" /k ""C:/mypath/my-venv/Scripts/activate.bat""


PyCharm 4 ahora tiene virtualenvs integrados en el IDE. Al seleccionar su intérprete de proyecto, puede crear, agregar o seleccionar un virtualenv. Han agregado una "Consola de Python" que se ejecuta en el intérprete de proyectos configurado.

Más información aquí.


PyCharm 4.5.4

Cree un archivo .pycharmrc en su carpeta de inicio con los siguientes contenidos

source ~/.bashrc source ~/pycharmvenv/bin/activate

Usando tu ruta virtualenv como el último parámetro.

A continuación, configure las Preferencias del shell-> Configuración del proyecto-> Ruta del shell para

/bin/bash --rcfile ~/.pycharmrc

No sé por qué, pero no funciona para mí. PyCharm imprime un error.

cmd.exe /K "<path-to-your-activate.bat>" Funciona, pero crea el mismo virtualenv para cada proyecto, e incluso si esto no es necesario.

¡Este receipt está funcionando! ¡Pero la cadena /env_yourenvlocate/scripts/activate.bat debe contener comillas, como esta "Full_path_to_your_env_locate/scripts/activate.bat" !

Desactivar el virtualenv es muy fácil - escriba en el terminal ''desactivar''

(virt_env) D:/Projects/src>deactivate D:/Projects/src>


Quería un entorno virtual separado para cada proyecto, y no me importó mucho tener archivos adicionales para facilitar esto. Una solución que solo necesita hacer una vez y que funciona para todos los proyectos es agregar lo siguiente a su .bashrc o .bash_profile :

if [ -d "./venv" ]; then source ./venv/bin/activate fi

Esto verifica si hay un entorno virtual donde se está abriendo el terminal y, si es así, lo activa (y, por supuesto, se podrían usar otras rutas relativas). La configuración de la terminal de PyCharm puede dejarse como predeterminada.


Si está utilizando la versión de Windows, es bastante fácil. Si ya tiene el entorno virtual solo navegue a su carpeta, busque activate.bat dentro de la carpeta Scripts . copia su ruta completa y pégala en el terminal de pycharm, luego presiona Enter y ¡listo!

Si necesita crear un nuevo entorno virtual:

Vaya a archivos> configuraciones y luego busque el project interpreter , ábralo, haga clic en el botón de engranaje y cree el entorno donde desee y luego siga el primer párrafo.


Si su Pycharm 2016.1.4v y superior debe usar "default path" /K "<path-to-your-activate.bat>" no se olvide de las comillas


Siguiendo la respuesta de Peter, aquí la versión Mac del archivo .pycharmrc :

source /etc/profile source ~/.bash_profile source <venv_dir>/bin/activate

Gallina


Tengo una solución que funcionaba en mi máquina con Windows 7.

Creo que el terminal de PyCharm es el resultado de ejecutar cmd.exe , que cargará la variable de PATH Windows y utilizará la versión de Python que encuentre primero dentro de esa PATH . Para editar esta variable, haga clic con el botón derecho en Mi PC -> Propiedades -> Configuración avanzada del sistema -> pestaña Avanzado -> Variables del entorno ... botón. Dentro de la sección de variables del sistema , seleccione y edite la variable PATH .

Aquí está la parte relevante de mi PATH antes de editar:

C: / Python27 /;
C: / Python27 / Lib / site-packages / pip /;
C: / Python27 / Scripts;
C: / Python27 / Lib / site-packages / django / bin;

... y después de editar PATH (solo 3 líneas ahora):

C: [project_path] / virtualenv-Py2.7_Dj1.7 / Lib / site-packages / pip;
C: [project_path] / virtualenvs / virtualenv-Py2.7_Dj1.7 / Scripts;
C: [ruta del proyecto] / virtualenvs / virtualenv-Py2.7_Dj1.7 / Lib / site-packages / django / bin;

Para probar esto, abra una nueva terminal de Windows ( Inicio -> escriba cmd y presione Enter ) y vea si está usando su entorno virtual. Si eso funciona, reinicie PyCharm y luego pruébelo en la terminal de PyCharm.


Una opción que tiene cuando ingresa al terminal> Ejecutar> Depurar> Editar configuraciones

seleccione el entorno de la conda apropiado. También cuando crea un nuevo proyecto, solicita configurar esta ubicación.


esto es lo que estoy haciendo: crea un archivo activate_env.bat (windows, maybe .sh in linux) en el archivo de código fuente:

/env_yourenvlocate/scripts/activate.bat

y otro archivo deactivate_env.bat:

/env_yourenvlocate/scripts/deactivate.bat

cada vez que abra la ventana del terminal, simplemente ejecute el archivo bat para activar / desactivar el virtualenv, se mantendrá en la ruta del código fuente, sin necesidad de cambiar la ruta hacia y desde atrás.

E:/Projects/django_study/src>active_env.bat E:/Projects/django_study/src>../env_django_study/scripts/activate.bat (env_django_study) E:/Projects/django_study/src> (env_django_study) E:/Projects/django_study/src>deactive_env.bat (env_django_study)E:/Projects/django_study/src>../env_django_study/scripts/deactivate.bat E:/Projects/django_study/src>


Editar:

Según https://www.jetbrains.com/pycharm/whatsnew/#v2016-3-venv-in-terminal , PyCharm 2016.3 (lanzado en noviembre de 2016) tiene soporte virutalenv para terminales listos para usar

Auto virtualenv es compatible con bash, zsh, fish y Windows cmd. Puede personalizar su preferencia de shell en Configuración (Preferencias) | Herramientas | Terminal.

Método antiguo:

Cree un archivo .pycharmrc en su carpeta de inicio con los siguientes contenidos

source ~/.bashrc source ~/pycharmvenv/bin/activate

Usando tu ruta virtualenv como el último parámetro.

A continuación, configure las Preferencias del shell-> Configuración del proyecto-> Ruta del shell para

/bin/bash --rcfile ~/.pycharmrc


Solución para WSL (Ubuntu en Windows)

Si está utilizando WSL (Ubuntu en Windows), también puede abrir bash como terminal en pycharm y activar un linux virtualenv.

Use un archivo .pycharmrc como se describe en la respuesta de Peter Gibson; Agregue el archivo .pycharmrc a su directorio principal con el siguiente contenido:

source ~/.bashrc source ~/path_to_virtualenv/bin/activate

En Pycharm File> Settings> Tools> Terminal agrega la siguiente ''Shell path'':

"C:/Windows/system32/bash.exe" -c "bash --rcfile ~/.pycharmrc"


Proyecto específico virtualenv

El camino a tu virtualenv en .pycharmrc no tiene que ser absoluto. Puede establecer un virtualenv específico del proyecto estableciendo una ruta relativa desde su directorio de proyecto. Mi virtualenv siempre se encuentra en una carpeta ''venv'' en el directorio de mi proyecto, por lo que mi archivo .pycharmrc ve así:

source ~/.bashrc source ~/pycharmvenv/bin/activate #absolute path source ./venv/bin/activate #relative path


BONUS: abre automáticamente el túnel ssh para conectar virtualenv como intérprete del proyecto

Agregue lo siguiente a su archivo .pycharmrc :

if [ $(ps -aux | grep -c ''ssh'') -lt 2 ]; then sudo service ssh start fi

Esto comprueba si un túnel ssh ya está abierto, y abre uno de lo contrario. En Archivo -> Configuración -> Proyecto -> Proyecto de intérprete en Pycharm, agregue un nuevo intérprete remoto con la siguiente configuración:

+--------------------------+---------------------------------+-------+----+ | Name: | <Interpreter name> | | | | Select | ''SSH Credentials'' | | | | Host: | 127.0.0.1 | Port: | 22 | | User: | <Linux username> | | | | Auth type: | ''Password'' | | | | Password: | <Linux password> | | | | Python interpreter path: | <Linux path to your virtualenv> | | | | Python helpers path: | <Set automatically> | | | +--------------------------+---------------------------------+-------+----+

Ahora cuando abres tu proyecto, tu bash comienza automáticamente en tu virtualenv, abre un túnel ssh y pycharm conecta el virtualenv como intérprete remoto.

advertencia: la última actualización en Windows inicia automáticamente un servicio SshBroker y SshProxy al inicio. Estos bloquean el túnel ssh de Linux a Windows. Puede detener estos servicios en el Administrador de tareas -> Servicios, después de lo cual todo volverá a funcionar.