web-dev-qa-db-ja.com

Pycharmは正しい環境変数PATHを設定します

私はpycharmで次のように実行しています:

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

しかし、シェルでecho $ PATHを実行すると、これが返されます。

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

[設定]> [コンソール]> Pythonコンソール> [環境変数]、設定]で編集しようとしました

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

しかし、これは機能していません

何か案が?

10
fj123x

@ fj123x、私はあなたの投稿からあなたがいると推測します

  1. macで
  2. bash以外のシェル(おそらくzsh)を使用する

Trueの場合、問題は、JetBrainsjeditermターミナルエミュレーターがすべてのシェル起動ファイルを正しい順序で実行していないことです。

Zshを使用している場合は、ターミナルプラグインの.zshrcを編集することで、その根本的な問題を修正できます。 PyCharnがアプリケーションフォルダにあると仮定して、/Applications/PyCharm.app/Contents/plugins/terminal/.zshrcを開き、内容を次のように置き換えます。

#!/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

すべての厄介な詳細に興味がある場合、または別のシェルのソリューションを開発できるようにこの問題をどのように解決したかを知りたい場合は、次の回答を参照してください: https://stackoverflow.com/a/51006003/ 1089228

2
Steve Tarver

Ubuntuでは、zshを使用して、同じ問題に遭遇しました。

PyCharmとシェルで同じ環境変数を使用するために使用するハックは、アイコンを使用する代わりに、ターミナルからPyCharmを起動することです。 PyCharmシェルは、起動元のメインシェルから継承しているように見えます。

Linuxで@SteveTarverのソリューションを複製できなかったので(Sudoを使用している場合でも.../terminal /.zshrcは/ snap /でのみ読み取られました)、他の人の問題を解決できることを願っています。

1

私はbashのコマンドラインで作業しており、$PATHを含む私の環境は.bash_profileに設定されています。 PyCharmのデフォルトのターミナルはtcshです。 ファイル...デフォルト設定...ツール...ターミナル...シェルパスに移動し、再起動して、bashに変更しました。組み込み端末は期待どおりに機能しました。

1
pmcd