我正在嘗試制作一個批處理腳本(稱為run_windows)來檢查 python 虛擬環境是否存在,如果不存在,則創建它然后激活它,安裝要求并最后運行一些 python 代碼。
set "VIRTUAL_ENV=mat_visualizer_env"
:read_mat
%VIRTUAL_ENV%\Scripts\activate
pip install -r app_files/requirements.txt
python -c "import sys; sys.path.insert(1,'app_files'); from main import visualize_mat_eeg; visualize_mat_eeg('%1')"
pause
EXIT /B 0
IF EXIST "%VIRTUAL_ENV%\Scripts\activate.bat" (
CALL :read_mat
) ELSE (
pip install virtualenv
python -m venv mat_visualizer_env
CALL :read_mat
)
但是,當我運行我的腳本時,代碼在第 4 行退出:%VIRTUAL_ENV%\Scripts\activate沒有錯誤:

uj5u.com熱心網友回復:
一些事情:
- 運行
.bat或bash版本的激活電源外殼是不可預測的,Activate.ps1在較新的版本中可以找到。如果從較新版本復制,它可能會與舊版本一起使用。 - Windows 中的腳本(Windows 中的 .bat 或 .cmd)行程自上而下
:<ANCHOR>不會像 Sub 或 Function 那樣被跳過。
我只使用了激活.ps1 的 Conda 版本,它添加了一些不錯的命令。快速瀏覽了標準 Python 3.10.5,它沒有添加命令,但應該可以正常作業。
編輯:補充說,在作業時,不是使用 bash 版本的激活的最佳選擇
uj5u.com熱心網友回復:
這是一個重新排列批處理檔案的快速示例,并Call按照前面的說明使用命令。
@Echo Off
Set "VIRTUAL_ENV=mat_visualizer_env"
If Not Exist "%VIRTUAL_ENV%\Scripts\activate.bat" (
pip.exe install virtualenv
python.exe -m venv %VIRTUAL_ENV%
)
If Not Exist "%VIRTUAL_ENV%\Scripts\activate.bat" Exit /B 1
Call "%VIRTUAL_ENV%\Scripts\activate.bat"
pip.exe install -r app_files/requirements.txt
python.exe -c "import sys; sys.path.insert(1,'app_files'); from main import visualize_mat_eeg; visualize_mat_eeg('%~1')"
Pause
Exit /B 0
請注意,此腳本中沒有像您的那樣定義作業目錄,因此無法保證在運行時,相對路徑指向預期的位置。此外,您還沒有明確說明%1應該是什么,或者它來自哪里,所以我不能保證這是否正確。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/507909.html
