簡體   English   中英

Python 從 WSL 開始看不到在調用 shell 時設置的環境變量

[英]Python started from WSL can't see environment variables set in calling shell

當我在 bash 中運行此代碼時:

VALUE=BAR python -c 'import os; print(os.environ["VALUE"])'

我希望看到要打印的字符串"BAR" 我得到了KeyError錯誤,表明腳本沒有收到環境變量。

我也試過

export VALUE=BAR; python -c 'import os; print(os.environ["VALUE"])'

export VALUE=BAR
python -c 'import os; print(os.environ["VALUE"])'

但我得到了同樣的結果。

@Philippe 運行type python; python -V; VALUE=BAR python -c 'import os; print(os.environ["VALUE"])' type python; python -V; VALUE=BAR python -c 'import os; print(os.environ["VALUE"])' type python; python -V; VALUE=BAR python -c 'import os; print(os.environ["VALUE"])'結果:

python is /usr/local/bin/python
Python 3.9.0
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\Danon\AppData\Local\Programs\Python\Python39\lib\os.py", line 679, in __getitem__
    raise KeyError(key) from None
KeyError: 'VALUE'

PS:也許我應該包括它,我使用 WSL 並添加了符號鏈接/usr/local/bin/python以指向C:\Program Files\Python\python.exe

也許我應該包含它,我使用 WSL 並添加了符號鏈接 /usr/local/bin/python 以指向 C:\Program Files\Python\python.exe。

不要那樣做。 默認情況下,WSL 進程和 Windows 進程之間不共享環境變量。 請參閱https://devblogs.microsoft.com/commandline/share-environment-vars-between-wsl-and-windows/了解使這項工作的一種方法,但我不推薦它。 最好使用原生的 WSL python 程序。

這也讓我很沮喪,然后我發現export這個詞不見了。

$ export VALUE=BAR
$ python3 -c 'import os; print(os.environ["VALUE"])'
BAR

我通過 WSL2 使用 Ubuntu 18.04。

- - 編輯 - - - - - - - -

哎呀。 我的錯。 我遇到了這個問題,當我發現這篇文章時,我也錯過了 OP 問題中的EXPORT 多好啊。

我將把它作為一個例子留給將來在發布之前重新閱讀。 我會羞愧地低下頭……

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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