2016-11-21 109 views
-1

我似乎無法讓我的代碼響應自定義環境變量,所以我寫了一段代碼來測試它。 getenv不會將我在BASH中設置的環境變量拉到我的python代碼中。任何幫助你可以提供將非常感激。os.getenv()不斷返回無

$ FRUSTRATION="PYTHON!!" 
$ echo FRUSTRATION 
PYTHON!! 
export FRUSTRATION 
ipython 
import os 
very_frustrated = os.getenv("FRUSTRATION") 
print(very_frustrated) 
None 
+3

這不是你跑的代碼。沒有前導'$'的回聲FRUSTRATION'會重複'FRUSTRATION',而不是變量的內容。猜測,你實際上並沒有在你從'ipython'發起的shell中輸出'FRUSTRATION'。 – ShadowRanger

+0

無法重新創建。你是從同一個shell啓動'ipython'嗎? –

+0

哪個操作系統/ shell?這看起來不像我知道的任何Linux shell。 – tdelaney

回答

1

工作對我來說:

:: export FOO=boo 
:: python 
Python 2.7.10 (default, Jul 30 2016, 18:31:42) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> os.getenv('FOO') 
'boo' 
>>> 

我的猜測是,你要麼忘記導出的變量,或者你拼寫錯誤的變量。

0
print os.environ 

這樣做是爲了看看是否有環境VAR添加到您的系統或沒有。 你的python代碼很好。這是設置env var的問題。

+0

我不明白這比調用'os.getenv'更好。如果在設置變量時出現問題,則此更改無效。 – tdelaney

+0

@tdelaney它會顯示你可以看到的變量,並且可能會看到你正在尋找的變量 - 除了這個名字可能拼錯了或者是某種性質。我碰巧認爲這是一個有價值的調試步驟,但這不是問題的真正答案。 – jszakmeister