0

我想把我为 Windows 编写的一些 GUI 程序带到 Ubuntu 软件中心。我正在使用几个外部命令行工具,我用它们来调用

os.system(cmd)

不,我想知道如何在 Linux(Ubuntu)下做到这一点。我必须使用哪个相应的文件?在 Windows 中,该工具只能在我的程序的文件夹中访问,但未安装,它在 Linux 上的工作方式是否相同?

我需要的工具都是 bioinformatic、primer3blastbowtie

非常感谢任何帮助!

4

1 回答 1

2

在 Linux 上,您通常打包您的应用程序,以便可以使用系统包管理器安装它们(例如,.deb 用于基于 Debian 的发行版(包括 Ubuntu 和.rpmRedHat)的文件)。您想要执行此操作的一个原因(其中一个)是依赖管理——您可以告诉包中的包管理器它依赖于哪些其他包,以便在不依赖的情况下安装它们。您可以使用setuptools执行此操作,这方面有很多资源。在这种情况下,您可以期望在系统范围内安装命令行工具,并且可以从应用程序中调用它们。

如果这不可能,您甚至可以包含您需要的工具的源代码,并为用户提供如何编译它们的说明(如有必要,在您的应用程序目录中)。对于大多数现代发行版,这是一个相当轻松的过程,但并不是最佳实践。


另一个注意事项:os.system正在阻塞,它会产生一个新进程并等待它退出。您无法轻松获取 stdout 或 stderr 输出或与之交互。您应该查看为子流程模块提供简化且(可以说)更强大的接口的subprocess模块(它是 Python 标准库的一部分)或envoy(第 3 方模块)。

如果你想“自动化”命令行工具,pexpect让你的生活更轻松。

于 2012-07-26T18:26:10.783 回答