python没有';无法获取环境变量,但它已在mac os上设置

python没有';无法获取环境变量,但它已在mac os上设置,python,qt,environment-variables,pyqt4,gitpython,Python,Qt,Environment Variables,Pyqt4,Gitpython,如果运行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 TE

如果运行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\u PYTHON\u GIT\u可执行变量:

    GIT_PYTHON_GIT_EXECUTABLE = os.getenv('GIT_PYTHON_GIT_EXECUTABLE')
    print GIT_PYTHON_GIT_EXECUTABLE
但输出打印:

    None
因为它似乎没有查看GIT\u PYTHON\u GIT\u可执行变量? 怎么了

更新


我在pycharm中设置了环境变量,现在它读到了,但在我的实际应用程序中,我使用pyqt库的QThread类。
我的应用程序构建在pyqt库之上。启动时,它执行一个Qthread。在Qthread中,需要执行gitpython函数。GitPython函数启动子进程并尝试读取GIT_PYTHON_GIT_可执行文件,但它无法读取变量。

为了让PYTHON解释器能够访问您设置的环境变量,必须在调用Pycharm之前设置环境,并且必须从设置环境变量的shell中运行Pycharm。否则Pycharm将无法访问该变量,其任何子进程(python)也无法访问

原因是,当您设置环境变量时,它对整个机器不是全局的,只是对当前shell及其子进程。每个子进程在启动时只获取父进程环境的快照。将来对父进程中环境的更改不会反映在子进程中(反之亦然)


您可以通过编辑主目录中名为
.profile
(如果使用bash,最好是
.bash\u profile
)的文件,使变量成为整个系统的全局变量。如果它们不存在,就创建它们。在文件中,只需添加所需的导出命令。此文件在您首次登录计算机时执行(因此您需要重新登录以使其正常工作)。登录后的所有未来程序都可以访问配置文件中设置的环境变量。这是因为当您登录一个新的shell时,您运行的所有其他进程都将从该shell中运行。

如何调用python?通过Pycharm IDE,该IDE将python intepreter设置为:/Library/Frameworks/python.framework/Versions/2.7/bin/python2.7您是否从设置环境变量的shell中运行Pycharm?通过图标应用程序(Pycharm 1.2.1)不是shell——在这里定义变量。我在Pycharm中设置了环境变量,现在它读到了,但在我的实际应用程序中,我使用了qthread。我有测试,在qthread中无法读取变量。GitPython库使用此变量搜索git可执行文件。我能用QToX做吗?你是说你正在C++中启动一个单独的线程并运行Python作为一个子进程吗?不,抱歉。我在pyqt中构建了一个应用程序。我的应用程序启动时,它运行一个Qthread。在该Qthread中,我尝试读取一个环境变量,我在主目录中的.bash_配置文件上设置了一个变量,但它不起作用。它不读