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