python:怎么才先执行.bat文件在行python语句?

有个bat脚本是用来设置环境变量的 如果不执行这个脚本后面的python语句找不到包,设置永久的环境变量(根据脚本内容设的)设了好几边没成功,所以有没有什么办法先执行一个.bat脚本再执行其他的python语句?即:
xxx.py

执行bat脚本
import xxx
.....
.....

我试过直接用os.system("xxx.bat"),但没用


补充:
之所以要在python脚本里执行bat脚本,是想用pycharm对python脚本进行单步调试
我这样搞
image.png
image.png
调试好像调试不了

阅读 4.8k
1 个回答

看描述是想要添加一个 PYTHONPATH 环境变量什么的,有两种选择吧。

  1. 想添加一个 import 路径,可以用 sys.path参考文档
  2. 想添加一个环境变量,其他地方用到,可以用 os.environ参考文档

关于 import 路径还可以看这个文档


那还是从 python 脚本出发,启动bat再继承上下文。

REM 脚本叫 setup.bat
SET ENV1=ENV1
# 这是 main.py,程序入口,启动 setup.bat 不做别的
import os

os.execlp('cmd.exe', "/C","setup.bat & python main2.py")
# 这是真实程序的入口点
import os

print('python ---- '+os.environ['ENV1'])

最后结果应该是

c:\Users\weakptr\repos\play>set ENV1=ENV1 
python ---- ENV1

原理是 exec* 系列函数调用用指定进程替换自己,所以 python main.py 启动后用cmd 替换了自己,cmd /C 先后执行 setup.bat 和 真正的脚本

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏