existing and virtualenv pycharm

virtualenv - and - pycharm virtual env



PyCharm-establece variables de entorno automáticamente (4)

Estoy usando virtualenv, virtualenvwrapper y PyCharm. Tengo una secuencia de comandos postactivate que ejecuta un comando "exportar" para aplicar las variables de entorno necesarias para cada proyecto, por lo que cuando ejecuto "workon X", las variables están listas para mí.

Sin embargo, al trabajar con PyCharm, parece que no puedo usar esas variables ejecutando el archivo postactivate (en la configuración "antes del inicio"). Tengo que ingresar manualmente cada variable de entorno en la ventana de configuración Ejecutar / Depurar.

¿Hay alguna forma de establecer automáticamente las variables de entorno dentro de PyCharm? ¿O tengo que hacer esto manualmente para cada nuevo proyecto y cambio de variable?

Gracias.


Estaba buscando una manera de hacer esto hoy y tropecé con otra variación de la misma pregunta (enlazada a continuación) y dejé mi solución allí aunque parece ser útil para esta pregunta también. Se están encargando de cargar las variables de entorno en el propio código.

Dado que esto es principalmente un problema durante el desarrollo, prefiero este enfoque:

  1. Abrir una terminal

  2. Suponiendo que se esté utilizando virtualenvwrapper, active el virtualenv del proyecto que hará que se ejecuten los enganches y establezca las variables de entorno (suponiendo que los está configurando en, digamos, el enganche postactivate)

  3. Ejecute PyCharm desde esta línea de comando.

Pycharm tendrá acceso a las variables de entorno. Probablemente debido a que algo tiene que ver con el proceso de PyCharm como un elemento secundario del shell.

https://.com/a/30374246/4924748


OK, he encontrado una mejor solución!

1. Instala la tela en tu virtualenv

ir a la terminal y
1. trabajar en su nombre virtualenv
2. pip instalar tela

2. agrega fabric.py

agregue un archivo de Python y lo llamó "fabric.py" en la raíz de su proyecto,
pasado el código de abajo,
y cambiar las variables de ruta a su propio

from fabric.api import * import os path_to_your_export_script = ''/Users/freddyTan/workspace/test.sh'' # here is where you put your virtualenvwrapper environment export script # could be .bash_profile or .bashrc depend on how you setup your vertualenvwrapper path_to_your_bash_file = ''/Users/freddyTan/.bash_profile'' def run_python(py_path, virtualenv_path): # get virtualenv folder, parent of bin virtualenv_path = os.path.dirname(virtualenv_path) # get virtualenv name virtualenv_name = os.path.basename(virtualenv_path) with hide(''running''), settings(warn_only=True): with prefix(''source %s'' % path_to_your_export_script): with prefix(''source %s'' % path_to_your_bash_file): with prefix(''workon %s'' % virtualenv_name): local(''python %s'' % py_path)

3. Añadir una herramienta externa.

ir
preferencia-> Herramientas externas -> haga clic en el botón Agregar
y complete la siguiente información

Name: whatever Group: whatever Program: "path to your virtualenv, should be under ''$HOME/.virtualenvs'' by default"/bin/fab Parameter: run_python:py_path=$FilePath$,virtualenv_path=$PyInterpreterDirectory$ Working directory: $ProjectFileDir$

screenshot

wolla, corre

ve a main.py, haz clic con el botón derecho, encuentra el nombre externo (por ejemplo, "lo que sea") y haz clic en él
También puede agregar acceso directo para esta herramienta externa
screenshot

inconvenientes

esto solo funciona en python 2.x, porque el tejido no es compatible con python 3


Otra solución de hackeo, pero una simple que, para mis propósitos, es suficiente. Tenga en cuenta que si bien esto es específico de Ubuntu (y presumiblemente Mint) Linux, también puede haber algo de uso para Mac.

Lo que hago es agregar una línea a la secuencia de comandos de inicio (pycharm.sh) que genera las variables de entorno necesarias (en mi caso, estaba teniendo problemas con w / cx_Oracle en Pycharm que de lo contrario no afectaban a las secuencias de comandos que se ejecutan en la línea de comandos). Si guarda las variables de entorno en un archivo llamado, por ejemplo, .env_local que está en su directorio de inicio, puede agregar la siguiente línea a pycharm.sh:. $ HOME / .env_local

Dos cosas importantes a tener en cuenta aquí con respecto a por qué uso específicamente ''''. (en lugar de ''fuente'') y por qué uso ''$ HOME'' en lugar de ''~'', que en bash son efectivamente intercambiables. 1) Noté que pycharm.sh usa el #! / Bin / sh, y me di cuenta de que en Ubuntu, sh ahora apunta al guión (en lugar de bash). 2) el guión, como resulta, no tiene la fuente "incorporada", ni se resolverá con el directorio de su casa.

También me doy cuenta de que cada vez que actualizo PyCharm, tendré que modificar el archivo pycharm.sh, por lo que esto no es lo ideal. Todavía mejor que tener que administrar las configuraciones de ejecución! Espero eso ayude.


Yo tengo el mismo problema. Tratar de mantener las variables de entorno a través de la interfaz de usuario es un trabajo tedioso. Parece que pycharm solo carga las variables env a través de bash_profile una vez cuando se inicia. Después de eso, cualquier exportación o intento de ejecutar un trabajo anterior para cambiar bash_profile es inútil

preguntándose cuándo el equipo de pycharm mejorará esto

En mi caso, mi solución para el intérprete remoto funciona mejor que la local, ya que puedo modificar / etc / environment y reiniciar el vm

Para el intérprete local, la mejor solución que puedo hacer son estas:

1. Crea una plantilla de configuración Ejecutar / Depurar y clónala

Si sus variables env son estables, esta es una solución simple para crear configuraciones de diferencias con las mismas variables env sin tener que volver a escribirlas.

  1. cree la configuración de la plantilla, ingrese las variables env que necesita.
  2. clónalos

ver foto

2. Cambia tu guión

Tal vez agregue algo de código usando os.environ [] = value en su script principal, pero no quiero hacer esto, cambie el código de mi producto y podría cometerse accidentalmente

Espero que alguien pueda dar una mejor respuesta, he pasado demasiado tiempo en este tema ...