如何通过Python脚本使用./执行命令行程序?

时间:2020-06-11 15:34:16

标签: python ubuntu subprocess executable pythonpath

我在〜/ trevor目录中有一个程序。使用Ubuntu,如果我进入该目录,则可以执行以下程序 $./program

但是,我希望能够从Python脚本中执行该程序,但是当我尝试使用时

import subprocess.run
subprocess.run("./program")

我收到以下错误:

OSError: [WinError 193] %1 is not a valid Win32 application

我该如何解决?

我正在通过Pycharm的终端运行python脚本。我想到可以通过Ubuntu的终端运行python脚本,但是后来我遇到了Ubuntu找到正确软件包的问题。我正在使用Ubuntu外壳程序运行Windows-我尝试通过将Ubuntu的PYTHONPATH更改为与Pycharm的项目解释器相同的路径来解决Ubuntu软件包问题,但这也不起作用。我认为解决上述问题比解决包装问题要容易。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

previously discussed in comments,然后包含在edit to the question中:

错误是试图通过Windows命令行执行Ubuntu程序。此处的解决方案是通过Ubuntu命令行执行Python脚本(使用subprocess.run()subprocess.call())。

由于在Ubuntu上执行Python找不到Python程序包/模块,这是因为这些程序包/模块是通过Windows命令行安装的,因此它们包含的本机/已编译依赖项是为Windows而非Ubuntu构建的。即使将Ubuntu的PYTHONPATH指向了软件包的位置,也有一些模块无法使用,因为它们具有平台本机组件。解决方案是再次通过Ubunutu下载该软件包(以使其适合Linux发行版)。

答案 1 :(得分:-1)

据我所知,

os.exec *通常适用于Windows和linux,但是在某些情况下,确实需要一个或两个字母来代替“ *”。您必须查看此内容,才能确定需要哪一个https://docs.python.org/2/library/os.html 例如os.execl或os.execle

subprocess.call是一个较旧的版本,它将避免许多特定于Shell的约定的问题。如果问题是上述注释所暗示的Ubuntu诞生,则可以解决。