'.'不被识别为有效命令

'.' is not recognized as valid command

在 Windows (11) 上,我试图在 subprocess.run 中激活 python virtualenv,但是,我无法执行激活脚本 :

import subprocess

p = subprocess.run(".\venv\Scripts\activate.bat", shell=True, stderr=subprocess.PIPE)
print(p.stderr)

制作:

b"'.' n'est pas reconnu en tant que commande interne\r\nou externe, un programme ex\x82cutable ou un fichier de commandes.\r\n"

注意.\venv\Scripts\activate.bat 正在 shell 提示符下工作。

我应该如何在 subprocess.run 中激活虚拟环境?

请记住,\ 用于转义特殊字符。 \v 是一个 ASCII Vertical Tab,因此您的命令行的第一部分只是 .。要解决此问题,请将 r 添加到您的字符串中。

p = subprocess.run([r".\venv\Scripts\activate.bat"], stderr=subprocess.PIPE)

请注意,我还删除了 shell=True。这不是必需的,因此不应使用。

哦,请记住,您不能从子进程更改一个进程的环境。所以,无论你想做什么,可能都行不通。