Pycharm establece la variable de entorno correcta PATH

Estoy ejecutando con pycharm lo siguiente:

print(os.environ["PATH"]) # returns '/usr/bin:/bin:/usr/sbin:/sbin' 

Pero cuando ejecuto echo $ PATH en un shell esto se devuelve:

 /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin:/opt/local/sbin 

Intenté editarlo en Preferencias> Consola> Consola de Python> Variables de entorno, configurando

PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin:/opt/local/sbin

Pero esto no está funcionando

¿alguna idea?

@ fj123x, voy a adivinar de tu publicación que eres

  1. en un mac
  2. usando una shell diferente a bash (quizás zsh)

Si es verdadero, el problema es que el emulador de terminal jediterm de JetBrains no está ejecutando todos los archivos de inicio de shell en el orden correcto.

Si está utilizando zsh, puede solucionar ese problema de raíz editando el complemento de terminal .zshrc . Suponiendo que PyCharn está en su carpeta de Aplicaciones, abra /Applications/PyCharm.app/Contents/plugins/terminal/.zshrc y reemplace los contenidos con:

 #!/bin/zsh # starver mod # Jetbrains uses jediterm as a java terminal emulator for all terminal uses. # There are some apparent limits on use: # - must use old-style shebang - not the #!/usr/bin/env zsh # - must implement the startup file loading here # # Note: original contents are in lib/terminal.jar # mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving bindkey '^[^[[C' forward-word bindkey '^[^[[D' backward-word ZDOTDIR=$_OLD_ZDOTDIR if [ -n "$JEDITERM_USER_RCFILE" ] then source "$JEDITERM_USER_RCFILE" unset JEDITERM_USER_RCFILE fi if [ -n "$ZDOTDIR" ] then DOTDIR=$ZDOTDIR else DOTDIR=$HOME fi if [ -f "/etc/zshenv" ]; then source "/etc/zshenv" fi if [ -f "$DOTDIR/.zshenv" ]; then source "$DOTDIR/.zshenv" fi if [ -n $LOGIN_SHELL ]; then if [ -f "/etc/zprofile" ]; then source "/etc/zprofile" fi if [ -f "$DOTDIR/.zprofile" ]; then source "$DOTDIR/.zprofile" fi fi if [ -f "/etc/zshrc" ]; then source "/etc/zshrc" fi if [ -f "$DOTDIR/.zshrc" ]; then source "$DOTDIR/.zshrc" fi if [ -n $LOGIN_SHELL ]; then if [ -f "/etc/zlogin" ]; then source "/etc/zlogin" fi if [ -f "$DOTDIR/.zlogin" ]; then source "$DOTDIR/.zlogin" fi fi if [ -n "$JEDITERM_SOURCE" ] then source $(echo $JEDITERM_SOURCE) unset JEDITERM_SOURCE fi 

Si está interesado en todos los detalles sangrientos, o quiere ver cómo resolví este problema para poder desarrollar una solución para otro shell, vea esta respuesta: https://stackoverflow.com/a/51006003/1089228

Trabajo en la línea de comandos en bash y mi entorno, incluido $PATH , se establece en .bash_profile . El terminal predeterminado en PyCharm es tcsh . Lo cambié a bash yendo a Archivo … Configuración predeterminada … Herramientas … Terminal … Ruta de Shell y luego reiniciando. El terminal integrado funcionó como se esperaba.

En Ubuntu, usando zsh, me topé con el mismo problema.

El truco que utilizo para tener las mismas variables de entorno en PyCharm y mi shell es iniciar PyCharm desde mi terminal en lugar de usar el icono. Parece que de esta manera el shell de PyCharm hereda del shell principal desde el que se ha iniciado.

Espero que pueda resolver el problema de otras personas ya que no pude replicar la solución de @Steve Tarver en Linux (… / terminal / .zshrc se leyó solo en / snap /, incluso cuando se usa sudo).