賞金將在 6 天后到期。此問題的答案有資格獲得 200聲望賞金。 Intrastellar Explorer希望引起對這個問題的更多關注。
我正在使用一個.bat檔案來:
- 設定環境變數
- 啟動一個 Python 程式(使用這些環境變數)
@ECHO OFF
REM TODO: figure out why Python can't see this
SET MY_ENV_VAR="foo"
CALL C:\code\repo\venv\Scripts\activate
CD /d C:\code\repo
@ECHO ON
REM kick off Python, where os.getenv can't see MY_ENV_VAR
CMD /k run_python_console_script
如果你很好奇,它會run_python_console_script啟動一個通過Entry Point發出的命令。
當我運行os.getenv("MY_ENV_VAR")它不回傳"foo"時,它會回傳None。為什么是這樣?
我不想使用SETX(docs),我希望環境變數的范圍僅限于此批處理腳本。
其他答案
如何在python中訪問批處理腳本變數?和Python 子行程不從 Bat 檔案中獲取環境變數想要呼叫.bat腳本作為子行程。我不想這樣做,.bat腳本是我的父行程。
virtualenvwrapper支持postactivate腳本(請參閱
如何使用 Python 3 venv 使用 postactivate 腳本?和設定激活 Python 虛擬環境的特定環境變數)但我沒有使用virtualenvwrapper.
uj5u.com熱心網友回復:
來自https://ss64.com/nt/set.html
使用 SET 命令所做的更改不是永久性的,它們僅適用于當前的 CMD 提示,并且僅在 CMD 視窗關閉之前保持不變。
要在命令列永久更改變數,請使用 SetX
uj5u.com熱心網友回復:
感謝@Mofi 在評論部分嘗試許多可能的事情!
陷阱是在第一條評論中鏈接到這里(放置""在環境變數周圍):https ://stackoverflow.com/a/26388460/11163122
REM TODO: figure out why Python can't see this
SET MY_ENV_VAR="foo"
REM DONE: this works (quotes on outside)
SET "MY_ENV_VAR=foo"
venv正如@JohnGordon 在評論中推測的那樣,激活似乎并沒有破壞預先存在的環境變數。
@Mofi 回答您的其他問題:
PS C:\path> reg QUERY "HKLM\Software\Microsoft\Command Processor" /v AutoRun
ERROR: The system was unable to find the specified registry key or value.
PS C:\path> reg QUERY "HKCU\Software\Microsoft\Command Processor" /v AutoRun
ERROR: The system was unable to find the specified registry key or value.
PS C:\path> .\venv\Scripts\activate
(venv) PS C:\path> reg QUERY "HKLM\Software\Microsoft\Command Processor" /v AutoRun
ERROR: The system was unable to find the specified registry key or value.
(venv) PS C:\path> reg QUERY "HKCU\Software\Microsoft\Command Processor" /v AutoRun
ERROR: The system was unable to find the specified registry key or value.
在pip installWindows 上 ed 時,run_python_console_script 入口點安裝到venvas 中venv\Scripts\run_python_console_script.exe。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/482009.html
