如何 运行 vcvarsall.bat/vcvars64.bat 作为 python 中的子进程
how to run vcvarsall.bat/vcvars64.bat as a subprocess in python
我正在尝试 运行 vcvarsall.bat bat 脚本来初始化所有环境变量,以便我可以 运行 跟进命令,但它似乎不起作用我想要的方式。这是我的代码片段:
try:
path = r'C:\Program Files (x86)\Microsoft Visual Studio19\Community\VC\Auxiliary\Build\vcvarsall.bat'
subprocess.Popen([vcvars, 'x64'], shell=True)
except FileNotFoundError:
print("Visual Studio is not installed on this system")
之后我还打印了 PATH 变量,但在 运行 此处使用此函数后它似乎并没有保留。这可能吗?
当你执行vcvarsall.bat
时,你正在创建一个开发环境,但是一旦子进程终止,创建的环境就会被破坏。子进程所做的环境修改绝不会返回到父进程的环境中 - 这是正常的,故意的,如果不是这种情况,大多数操作系统中的很多东西都会立即中断。
你应该在 BEFORE 运行 Python 和你的程序中调用这个批处理,这样所有需要的变量都已经在环境中了。
我正在尝试 运行 vcvarsall.bat bat 脚本来初始化所有环境变量,以便我可以 运行 跟进命令,但它似乎不起作用我想要的方式。这是我的代码片段:
try:
path = r'C:\Program Files (x86)\Microsoft Visual Studio19\Community\VC\Auxiliary\Build\vcvarsall.bat'
subprocess.Popen([vcvars, 'x64'], shell=True)
except FileNotFoundError:
print("Visual Studio is not installed on this system")
之后我还打印了 PATH 变量,但在 运行 此处使用此函数后它似乎并没有保留。这可能吗?
当你执行vcvarsall.bat
时,你正在创建一个开发环境,但是一旦子进程终止,创建的环境就会被破坏。子进程所做的环境修改绝不会返回到父进程的环境中 - 这是正常的,故意的,如果不是这种情况,大多数操作系统中的很多东西都会立即中断。
你应该在 BEFORE 运行 Python 和你的程序中调用这个批处理,这样所有需要的变量都已经在环境中了。