【发布时间】:2023-03-18 20:04:01
【问题描述】:
简介
我正在尝试使用 python 中的Subprocess.Popen 调用需要从 VS 开发人员命令提示符内部运行的命令 ('nmake')。
为它设置路径不适用于我的情况。
我尝试阅读docs,但似乎没有其他方法可以使用默认 CMD.exe 之外的其他内容。
我的代码
import subprocess
command = ['nmake']
with subprocess.Popen(["nmake"],
executable=r"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsMSBuildCmd.bat",
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
universal_newlines=True) as process:
print(process.stdout.readlines())
print(process.stderr.readlines())
例外
目前抛出
'nmake' is not recognized as an internal or external command
所以它实际上并没有使用那里提供的可执行文件。
备注
使用系统:Windows 10,python3.8
【问题讨论】:
-
VS 开发者提示 is CMD.exe。但是,CMD 正在从 Visual Studio 安装运行该批处理文件以设置正确的路径。您可能想测试
...\VsMSBuildCmd.bat & nmake,但我不确定VsMSBuildCmd.bat的结果是否发生在nmake启动之前。从逻辑上讲,它应该。 -
很遗憾不起作用
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsMSBuildCmd.bat" & nmake返回nmake 无法识别,然后运行我认为的蝙蝠。 -
您可能想要制作自己的包装批处理文件。这允许您将这两个命令放在不同的行上,而 CMD 只需要调用包装器。
-
为它设置路径对我的情况不起作用是什么意思。 你可以使用 sys.path 修改路径吗?你知道nmake.exe的位置吗?主要在 C 编译器的 bin 目录中。
-
我确实知道nmake.exe的路径,但这本身是不够的,因为它依赖于.bat文件临时添加到路径中的许多其他库。
标签: python python-3.x visual-studio subprocess popen