从 python 运行 wine 命令

从 python 运行 wine 命令

我有 Apache,它使用 Python 脚本提供 Web 服务。我尝试从 Python 执行 WINE 命令,但什么也没发生...

command1 = 'dir > test.txt'
command2 = 'wine someexecutable.exe inputfile outpufile'
p = subprocess.call(command1, shell=True)
p = subprocess.call(command2, shell=True)

command1 正常执行,我得到了一个 test.txt 文件。似乎 command2 根本没有执行...如果我使用 www-data 用户从 shell 手动执行它,command2 就会执行,我得到输出文件 -> not a permission problem。是否有需要配置的东西来允许 python 执行 wine 命令?

答案1

语法通常是正确的,但您需要为 Wine 提供更明确的可执行文件路径。您可以在返回错误中看到发生了什么:

>>> subprocess.call("wine someexecutable.exe inputfile outpufile", shell=True)
wine: cannot find L"C:\\windows\\system32\\someexecutable.exe"

答案2

只要 wine 安装正确,下面的代码就可以工作:

subprocess.call("./filename.exe", shell=True)

我可以让它工作而无需直接调用 wine,希望您也能如此。

答案3

尝试这个:

import commands

command1 = 'dir > test.txt'
command2 = 'wine someexecutable.exe inputfile outpufile'

cmd1 = commands.getoutput(command1)
cmd2 = commands.getoutput(command2)

笔记:有时 OS 管道缓冲区可能会被重定向到管道的输出填满,因此请尝试使用命令模块而不是子进程来完成此任务!

相关内容