Environment variables PyCharm不使用环境变量更新

Environment variables PyCharm不使用环境变量更新,environment-variables,pycharm,Environment Variables,Pycharm,当我使用vim更新我的环境变量时(在~/.bashrc中),PyCharm不会立即得到更新。我必须关闭程序,再次关闭source~/.bashrc,然后重新打开PyCharm 有没有办法让PyCharm自动(或不关闭)进行更改?环境变量就是这样工作的。如果更改它们,则必须重新为.bashrc(或环境变量所在的任何文件)提供源代码。Pycharm维护自己版本的环境变量,而这些变量并非来自shell 看起来,如果pycharm是从virtualenv或包含上述变量的shell执行的,它将加载这些变量

当我使用
vim
更新我的环境变量时(在
~/.bashrc
中),PyCharm不会立即得到更新。我必须关闭程序,再次关闭source
~/.bashrc
,然后重新打开PyCharm


有没有办法让PyCharm自动(或不关闭)进行更改?

环境变量就是这样工作的。如果更改它们,则必须重新为.bashrc(或环境变量所在的任何文件)提供源代码。

Pycharm维护自己版本的环境变量,而这些变量并非来自shell

看起来,如果pycharm是从virtualenv或包含上述变量的shell执行的,它将加载这些变量,但它不是动态的

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


创建任何进程时,它都会从其父进程(在您的情况下是O.s.本身)继承环境变量。如果在父级更改环境变量,则子进程不会意识到它

PyCharm允许您从运行\调试配置窗口更改环境变量。 运行>编辑配置>环境变量->

如果使用,请注意,默认情况下,它不会传递环境变量

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

sudo -E /path/to/python/executable "$@"

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

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

在我的例子中,pycharm即使在重新启动后也不会从bashrc获取env变量,我知道这已经很晚了,但是我也遇到了这个问题,并且发现接受的答案很乏味,因为我已经保存了很多配置

一位同事告诉我的解决方案是将环境变量添加到~/.profile中。然后我不得不重新启动我的linux机器,pycharm获得了新的值。(对于OSX,我只需要源代码~/.profile并完全重新启动pycharm)


需要注意的一点是,另一位同事说pycharm将查看~/.bash_配置文件,因此如果您有该文件,则需要在其中添加环境变量

。。。您多久更新一次环境变量?另外,您可能在这方面运气更好。不太常见,我的项目的一些敏感信息存储在环境变量中而不是代码中,我在执行
$printenv
时正确地看到了变量,因此我认为这不是OSS的问题修复了重启不起作用时的我的问题,我的shell没有使用正确的RC文件。但是Pycharm仍然需要重新启动才能将新变量放入
操作系统。environ
这个问题是否可以通过如下所述重新加载解释器来解决:?@Mr_and___D尝试了一下,用了4个菜单才能进入重新加载选项,但它没有工作,看起来下面的omer727所说的是正确的,应用程序不会得到更新的变量,因为它是在更改之前启动的子进程,这是可以理解的,但是,在终端中查找文件不会更新OS对象中的变量,这包括在完成源代码后运行一段代码。只有完全关闭应用程序并重新启动它才能将新变量添加到操作系统对象中,从技术上讲,每次运行代码时,操作系统对象都应该保持新鲜。这就是环境变量的工作方式。当你加载你的应用程序时,它实际上是加载了你的环境的快照。好吧,但在我看来,“这就是它的工作原理”并不是一个很好的答案,奥马尔提供了一些背景信息,说明了它为什么以这种方式工作,这就是为什么它得到了我的认可。我并不真的担心接受,但我说了他(在他之前)做的同样的事情。他补充的只是如何改变pycharm中的变量,这与你的问题并不相关。我直接回答了你的问题,这给了你当你改变变量时应用程序没有更新的原因。值得深思。很高兴您得到了所需的答案。在应用程序启动后,如何重新使用Python进行源代码转换?当第一次调用
import os
命令时,
os
模块提取环境变量。在应用程序启动后如何重新获取资源?感谢Omer727,我知道手动将变量添加到测试中,并且一直在使用此选项,但特别想知道为什么os.environ没有更新,看起来您所说的启动后未更新的子进程是正确的,似乎没有办法在不关闭应用程序的情况下进行更新也许我做得太过分了。。。有没有办法编写脚本?如何修改父环境变量?有什么想法吗?只要注意在字段上直接定义变量时不要有额外的空格,例如:
VAR1=VAL1;VAR2=VAL2
实际上有一个bug,每当我从这里更改环境时,当我再次打开窗口时,它们就会回来。这真的很烦人,bashrc不是只有在启动终端时才运行吗?据我所知,如果从终端启动,请继承环境变量如果您有新问题,请单击按钮询问。如果你有足够的声誉,问题就来了。或者,“星”它作为一个最喜爱的,你会被告知任何新的答案。