如何在Windows下编写bat脚本,双击激活Python venv环境并执行Python脚本
windows 的 bat 脚本一窍不通。
如何在Windows下编写bat脚本,双击激活Python venv环境并执行Python脚本
打包成单文件 exe
在Windows下写个bat脚本来激活venv并跑Python脚本,这事儿挺常见的。我一般这么干:
首先,确保你的项目结构是这样的:
my_project/
├── venv/
├── script.py
└── run.bat
run.bat脚本可以这样写:
@echo off
REM 进入脚本所在目录
cd /d "%~dp0"
REM 检查venv目录是否存在
if not exist "venv\Scripts\activate.bat" (
echo Virtual environment not found!
pause
exit /b 1
)
REM 激活虚拟环境
call venv\Scripts\activate.bat
REM 执行Python脚本
python script.py
REM 执行完成后暂停(可选)
pause
关键点说明:
cd /d "%~dp0"确保脚本在正确目录运行call命令用来激活venv,这样环境变量才会生效- 激活后直接运行python命令,venv会自动使用虚拟环境中的Python解释器
如果想让脚本更健壮点,可以加些检查:
@echo off
cd /d "%~dp0"
if not exist "venv\Scripts\activate.bat" (
echo Error: venv not found. Run 'python -m venv venv' first.
pause
exit /b 1
)
if not exist "script.py" (
echo Error: script.py not found.
pause
exit /b 1
)
call venv\Scripts\activate.bat
python script.py
pause
这样双击bat文件就能自动激活环境并运行脚本了。
总结:bat脚本里用call激活venv再执行python命令就行。
我写的辣鸡 powershell:
if (Test-Path “.\venv\Scripts\activate”) {
.\venv\Scripts\activate.ps1
}
(:з)∠)
这算伸手贴吗?麻烦楼下告知
不晓得。标题太长不看
实在是连搜索都不知道怎么搜索
直接这样就可以吗? 我本来想测试一下写了
…\venv\Scripts\activate.bat
pip list
pause
然后直接双击
结果 pause 都没有成功窗口就关掉了。
虽然知道可以再 cmd 里面执行,不过没有这样操作就放弃了
没想到这个方案,来试一下。
可以写 powershell 脚本.ps1 ,能导入模块,基于.net ,接口丰富
把 python 脚本拖到 开始菜单->程序->启动
试试看
不行的话,打开记事本,python c:\user\xxxxxx (你放 python 脚本的路径)xxxxx<a target="_blank" href=“http://myPyScript.py” rel=“nofollow noopener”>myPyScript.py ,另存为 xxx.bat ,然后拖到启动里面去。
这是什么操作?这不是开机启动吗?看来我的描述很有问题啊没把问题说清楚。
谢谢,看看能不能找到相关的信息测试一下,至少在 powershell 下执行 activite 不会直接给我开一个新窗口,可能比较容易点。
用 powershell 一下子就搞定了。。。可以了溜了溜了。
是要,给那种对编程一窍不通的同事,一个一键运行 python 的方案么?
@ LemonFirst
問題出在你的第一行
…\venv\Scripts\activate.bat
這是另一個 bat 檔, 所以要加上 call
call …\venv\Scripts\activate.bat
這樣應該就解決了
我直接就是 pythonw /aaa.py ,双击运行,还可以加 input,也写过用 vbs 调用,好处是没有任何图形界面,不像 cmd 还要闪一下
我一般是写一个 PowerShell 脚本,然后写一个 batch 启动 PowerShell 脚本(这样可以保持 AllSigned 的执行策略)
#6 你需要 CALL 内部命令,比如
CALL path/to/another/batch.bat
否则控制权永远不会返回当前 batch
# 13 不是。自己想偷懒而已。。。
#14 虽然用 powershell 解决了,但是还是感谢解答。 这样可以以此去了解 bat 的流程,增长见识,不然本来都不知道从何下手。感谢
#17 感谢。

