2015-11-10 642 views
7

当我更新我的环境变量(我使用vim来编辑〜/ .bashrc)PyCharm不立即得到更新,我不得不关闭程序,再次源〜/ .bashrc,并重新打开PyCharmpycharm不更新与环境变量

任何方式使PyCharm自动或不关闭的变化源变化?

+0

好奇......你更新环境变量的频率如何?另外,你可能在http://superuser.com有更好的运气。 – isherwood

+0

不是很经常,我的项目的一些敏感信息存储在环境变量中而不是代码中,当我做'$ printenv'时我正确地看到变量,所以我不认为这是操作系统的问题 – RenaissanceProgrammer

+0

解决了我的问题重启不起作用,我没有为我的shell使用正确的RC文件。但是Pycharm仍然需要重新启动以获得新的变量到'os.environ' – RenaissanceProgrammer

回答

5

当任何进程获得创建继承它的环境变量从它的父进程(O.S.本身你的情况)。如果您在父级更改环境变量,则子进程不知道它。

PyCharm允许您从Run \ Debug Configuration窗口中更改环境变量。 运行>编辑配置>环境变量 - >

Images

+1

感谢Omer727,我知道手动添加变量到测试中,并且一直在使用这个选项,但是特别想知道为什么os.environ没有更新,看起来像你说的关于子进程没有更新后,它是推出是正确的,似乎没有办法更新没有关闭应用程序 – RenaissanceProgrammer

0

这就是环境变量的工作原理。如果你改变它们,你必须重新编译你的.bashrc(或者是环境变量所在的文件)。

+0

是的,这是可以理解的,但是,终端中的文件资源不会更新OS对象中的变量,这包括源代码完成后运行一段代码。只关闭应用程序并重新启动它将新变量添加到操作系统对象,从技术上讲,每次运行代码时,操作系统对象应该是新鲜的 – RenaissanceProgrammer

+0

这也是环境变量的工作方式。当你加载你的应用程序时,它基本上会载入你的环境快照。 –

+0

好,但IMO“这只是它的工作原理”并不是什么答案,Omer提供了一些背景资料,说明它为什么以这种方式工作,这就是为什么它得到我的接受 – RenaissanceProgrammer

0

Pycharm维护它自己的环境变量版本,并且它们不是从shell中获取的。

看来,如果从virtualenv或包含所述变量的shell执行pycharm,它将加载它们,但它不是动态的。

下面的答案有一个settings.py脚本,用于virtualenv更新和维护设置。这是否完全解决了你的问题,我不确定。

Pycharm: set environment variable for run manage.py Task

0

如果您使用的是"sudo python" technique,要知道,它默认情况下不传达的环境变量。

要正确地传递在PyCharm启动配置中定义的环境变量,使用-E开关:

sudo -E /path/to/python/executable "[email protected]" 
0

我最近发现Windows中的解决方法。关闭Pycharm,复制直接从快捷方式运行Pycharm命令,然后重新运行在一个新的终端窗口:CMD,cmder等

C:\ 
λ "C:\Program Files\JetBrains\PyCharm 2017.2.1\bin\pycharm64.exe" 
0

在我的情况pycharm不采取ENV变量从bashrc中,即使重新启动后