簡體   English   中英

如何設置整數作為環境變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM