PyDev运行Python脚本时特定环境变量无法访问的问题求助
LIB_ROOT环境变量无法访问的原因 这事儿我之前帮好几个开发者排查过,核心问题出在PyDev的环境变量加载逻辑和终端、IPython不一样,具体可以从这几个方向入手排查:
PyDev运行配置未同步
LIB_ROOT变量
PyDev的每个运行配置(比如你的test.py的启动项)会维护独立的环境变量集合,默认不会自动继承终端里手动设置的变量。如果你是在Bash/IPython里通过export LIB_ROOT=xxx临时设置的变量,PyDev完全读不到。
解决方法:打开PyDev的Run Configurations,找到对应test.py的配置项,切换到Environment标签页,检查列表里有没有LIB_ROOT。如果没有,点击Add手动添加键值对;或者勾选Append environment to native environment选项,让PyDev继承系统原生环境变量。PyDev未加载终端专属的环境变量配置
很多人习惯把环境变量写在.bashrc、.zshrc这类终端交互模式才会加载的配置文件里,但PyDev是图形界面启动的程序,不会走终端的shell初始化流程,所以这些变量不会被加载。而IPython和Bash本身就是终端环境,自然能读到。
解决方法:把LIB_ROOT配置到系统全局环境变量中——比如Linux的/etc/environment、Mac的~/.zshenv(如果用Zsh)、Windows的「系统属性-高级-环境变量」,配置完成后重启PyDev生效。大小写或拼写的细微错误(低概率但值得快速排查)
Linux/Mac系统的环境变量是区分大小写的,如果你在PyDev的代码里误写成了Lib_Root或者lib_root,就会报错。虽然你说其他环境正常,但还是可以快速核对下代码里的变量名拼写。PyDev的缓存导致旧配置残留
有时候PyDev会缓存旧的环境配置,哪怕你已经更新了系统变量,它还是会用旧的配置运行程序。
解决方法:直接重启PyDev,或者删掉当前的test.py运行配置,新建一个再测试。
内容的提问来源于stack exchange,提问作者Alex Luya

