You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python脚本激活VENV并启动Django本地服务器?启动失败求助

解决激活虚拟环境并启动Django服务器的问题

你的代码问题出在两个核心点:

  1. 最后一行os.system('python manage.py runserver')调用的是系统全局的Python解释器,和你激活的虚拟环境完全无关。
  2. 用start新开窗口执行激活脚本的方式,会让虚拟环境的环境变量局限在新窗口里,无法作用到后续命令。

下面是两种可靠的解决方法:

方法一:直接调用虚拟环境内的Python(推荐)

虚拟环境的Scripts目录下的python.exe已经绑定了该环境的依赖,直接用它运行manage.py即可,无需手动激活脚本:

import subprocess
import os

# 替换为你的虚拟环境python.exe的实际路径
venv_python = 'path\\to\\venv\\Scripts\\python.exe'
# 确保manage.py的路径正确,这里用绝对路径避免问题
manage_file = os.path.abspath('manage.py')

# 运行Django服务器
subprocess.run([venv_python, manage_file, 'runserver'], check=True)

方法二:在同一进程内激活虚拟环境再执行命令

如果需要在同一个命令行进程中执行多个虚拟环境内的操作,可以用&&把激活命令和启动服务器的命令串联:

import subprocess

# 替换为你的activate.bat路径
activate_script = 'path\\to\\venv\\Scripts\\activate.bat'

# 构造命令:先激活虚拟环境,再启动服务器
cmd = f'"{activate_script}" && python manage.py runserver'
subprocess.run(cmd, shell=True, check=True)

补充说明

  • 不要用start新开窗口的方式,虚拟环境的环境变量只在当前cmd进程内有效,新开窗口无法共享这个环境。
  • subprocess.run比Popen更适合这种同步执行的场景,check=True会在命令执行失败时抛出异常,方便排查问题。

内容的提问来源于stack exchange,提问作者Ahmed-XP3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:25:59