[英]How to set an integer as a environment variable?
我正在嘗試如下設置環境變量,但是行具有整數變量並遇到以下錯誤,如何解決此問題?或者是否有更好的方法使用python設置環境變量
row = 399
os.environ['BUILD_VER'] = row
錯誤:-
os.environ['BUILD_VER'] = row
File "C:\Python27\lib\os.py", line 420, in __setitem__
putenv(key, item)
TypeError: must be string, not int
環境變量只能包含字符串值。 您必須執行以下操作:
os.environ['BUILD_VER'] = str(row)
但是,您必須了解,您設置的任何環境變量都只會對Python進程及其設置后產生的任何進程生效。
例如,您不能使用Python從shell腳本中設置環境變量,因為shell產生了Python,而Python無法為產生它的shell設置環境變量。
如果嘗試將Windows環境變量設置為在Python中生成的值,則應具有一個Python腳本來打印該值,並讓批處理文件執行該腳本。 假設您的腳本getver.py
如下所示:
row = 399
print row
然后,您的批處理文件中將包含以下內容:
FOR /F %v IN ('getver.py') DO SET BUILD_VER=%v
抱歉,我應該清楚一點,我嘗試了row = str(row)但未設置環境變量
它已設置,但是,就像在其他任何語言(包括bash
)中一樣,您正在修改當前進程的環境變量,因此,正常情況下,如果您返回shell,則更改是不可見的(而是可見於從腳本啟動的進程,因為通常將環境變量復制到子進程)。
您無法克服此限制; 如其他幾個答案所述 ,無法設置父進程的環境變量。 期。
人們通常做的是source
shell腳本能夠直接在shell設置環境-腳本當前shell下運行,從而修改它的環境變量。 當然,這僅適用於Shell語言。
一些程序使用的另一種選擇(例如參見ssh-agent
)是在標准輸出上打印一個簡短的shell腳本,該腳本設置適當的變量:
matteo@teokubuntu:~$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-xkn6jGSZAxoA/agent.5184; export SSH_AUTH_SOCK;
SSH_AGENT_PID=5185; export SSH_AGENT_PID;
echo Agent pid 5185;
然后,該程序打算用作eval $(programname)
,它在當前shell中運行programname
的輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.