2015-11-10 143 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中,即使重新啓動後