如何通过Python脚本激活虚拟环境并在其中执行后续指令?
解决Windows下Python脚本激活虚拟环境并安装Django的问题
你在Windows环境下遇到的问题,核心是用了Linux/macOS的激活逻辑,且没匹配Windows对应的shell执行方式,咱们一步步梳理解决:
问题根源
source是Linux/macOS专属的命令,Windows的CMD/PowerShell根本不识别,所以会触发FileNotFoundError- 直接调用
./Scripts/activate或.命令时,没有通过Windows对应的shell环境执行,导致权限或命令解析错误
正确实现方式
在Windows下,激活虚拟环境并执行后续操作(比如安装Django),需要根据你用的shell选择对应命令,并且通过subprocess正确调用shell来执行命令串——你想在同一个流程里完成激活+安装的思路完全可行!
方案1:用CMD环境(兼容性最强)
Windows CMD的激活脚本是Scripts\activate.bat,我们可以通过cmd /c来串联激活和安装命令:
import subprocess import os env_name = "env_new" # 创建虚拟环境 subprocess.run(["py", "-m", "venv", env_name], check=True) # 切换到虚拟环境目录 os.chdir(env_name) # 激活环境+安装Django(通过CMD执行命令串) subprocess.run( "cmd /c Scripts\\activate.bat && pip install django", shell=True, check=True )
方案2:用PowerShell环境
如果你的系统默认用PowerShell,激活脚本是Scripts\Activate.ps1,需要临时绕过PowerShell的执行策略限制:
import subprocess import os env_name = "env_new" subprocess.run(["py", "-m", "venv", env_name], check=True) os.chdir(env_name) # PowerShell下激活并安装Django subprocess.run( [ "powershell", "-ExecutionPolicy", "Bypass", "-Command", "& .\\Scripts\\Activate.ps1; pip install django" ], check=True )
额外提示
check=True参数能让脚本在命令执行失败时直接抛出异常,方便你快速排查问题- 如果后续还要执行更多Django相关操作(比如创建项目),直接把命令追加到串里即可,比如
&& django-admin startproject mysite
内容的提问来源于stack exchange,提问作者Sean




