1

env コマンドを実行すると、次の出力が得られます。

TERM_PROGRAM=Apple_Terminal
GPG_AGENT_INFO=/Users/paganotti/.gnupg/S.gpg-agent:346:1
TERM=xterm-color
SHELL=/bin/bash
TMPDIR=/var/folders/BM/BMT-0W4+H5yVS5fJngFdsk+++TI/-Tmp-/
Apple_PubSub_Socket_Render=/tmp/launch-V50MvM/Render
TERM_PROGRAM_VERSION=273.1
USER=paganotti
COMMAND_MODE=unix2003
SSH_AUTH_SOCK=/tmp/launch-llkTBf/Listeners
__CF_USER_TEXT_ENCODING=0x1F5:0:0
PATH=/Library/Frameworks/Python.framework/Versions/2.7/bin:/opt/local/bin:/opt/local/sbin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/Users/paganotti/Documents/Project/ZendFramework-1.11.11-minimal/bin/zf.sh:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin://usr/local/git/bin/git:/Library/Frameworks/Python.framework/Versions/3.1/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/local/ImageMagick/bin:/usr/local/MacGPG2/bin:/usr/texbin:/usr/X11/bin:/Users/paganotti/Sviluppo/android-sdk-1.5_r3/tools
PWD=/Users/paganotti
LANG=it_IT.UTF-8
SHLVL=1
HOME=/Users/paganotti
LOGNAME=paganotti
GIT_PYTHON_GIT_EXECUTABLE=/usr/local/git/bin/git
DISPLAY=/tmp/launch-aqcM4a/org.x:0
_=/usr/bin/env

私はPythonでGIT_PYTHON_GIT_EXECUTABLE変数を取得しようとしています:

    GIT_PYTHON_GIT_EXECUTABLE = os.getenv('GIT_PYTHON_GIT_EXECUTABLE')
    print GIT_PYTHON_GIT_EXECUTABLE

しかし出力印刷:

    None

GIT_PYTHON_GIT_EXECUTABLE 変数が表示されないようです。どうしたの?

アップデート

私はpycharmで環境変数を設定し、それを読みましたが、実際のアプリケーションではpyqtライブラリのQThreadクラスを使用しています。私のアプリケーションは、起動時にpyqtライブラリの上に構築され、Qthreadを実行します。Qthread では、gitpython 関数を実行します。GitPython 関数はサブプロセスを開始し、GIT_PYTHON_GIT_EXECUTABLE を読み取ろうとしますが、変数を読み取れません。

4

1 に答える 1

5

設定した環境変数に Python インタープリターがアクセスできるようにするには、Pycharm を呼び出す前に環境を設定し、環境変数を設定したシェルから Pycharm を実行する必要があります。そうしないと、Pycharm は変数にアクセスできず、その子プロセス (python) にもアクセスできません。

その理由は、環境変数を設定すると、マシン全体にグローバルではなく、現在のシェルとそのサブプロセスだけにグローバルになるためです。また、各サブプロセスは、開始時に親の環境のスナップショットのみを取得します。親の環境に対する将来の変更は、子プロセスには反映されません (逆も同様です)。

ホーム ディレクトリにある (bash を使用している場合はできれば).profileというファイルを編集することで、変数をシステム全体に対してグローバルにすることができます。.bash_profile存在しない場合は、作成してください。ファイルに、必要なエクスポート コマンドを追加するだけです。このファイルは、コンピュータに最初にログインしたときに実行されます (したがって、これを機能させるには再ログインする必要があります)。ログイン後のすべてのプログラムは、プロファイル ファイルに設定された環境変数にアクセスできます。ログインすると、実行する他のすべてのプロセスが実行される新しいシェルが生成されるため、これは機能します。

于 2012-03-14T16:53:31.293 に答える