gpt4 book ai didi

python - 在windows上通过python调用使用linux子系统编译的程序

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:21 24 4
gpt4 key购买 nike

我有一个在Windows 10引入的Linux子系统中编译的程序,如何使用python subprocess命令调用它?默认情况下,subprocess 命令似乎使用 windows shell 而不是 linux 子系统

这是一个示例程序(请记住,当我通过 windows python anaconda 解释器运行它时),我确实安装了 linux 子系统

import subprocess
subprocess.Popen('ls', shell=False)

错误结果:

Traceback (most recent call last):
File "C:\Users\rt\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2963, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-3-cf9f6642ea11>", line 1, in <module>
subprocess.Popen('ls', shell=False)
File "C:\Users\rt\Anaconda3\lib\subprocess.py", line 709, in __init__
restore_signals, start_new_session)
File "C:\Users\rt\Anaconda3\lib\subprocess.py", line 997, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified

最佳答案

subprocess 使用 CreateProcess 在 Windows 上运行程序。如果您使用 shell=True,它会将 cmd.exe 添加到命令的前面,以便它通过 Windows 命令解释器运行,而不是直接执行。您可以使用 Linux 的 Windows 子系统 玩同样的游戏。它使用 wsl.exe 很像 cmd.exe。因此,使用 shell=False(默认值)您可以

Popen("wsl.exe " + "my_command param1 param2")

Popen(["wsl.exe"] + ["my_command", "param1", "param2"])

关于python - 在windows上通过python调用使用linux子系统编译的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50144269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com