我想在Ubuntu软件中心带一些为Windows编写的GUI程序。我正在使用几个外部命令行工具,我用
调用os.system(cmd)
不,我想知道如何在Linux(Ubuntu)下执行此操作。我必须使用哪个相应的文件?在Windows中,该工具只能在我的程序的文件夹中访问但未安装,它是否会以相同的方式用于Linux?
我需要的工具都是生物信息学,primer3,blast,bowtie。
非常感谢任何帮助!
答案 0 :(得分:2)
在Linux上,您通常打包应用程序,以便可以使用系统包管理器安装它们(例如,基于Debian的发行版的.deb
文件,包括Ubuntu和RedHat的.rpm
。您希望这样做的原因之一(依赖于许多)是依赖关系管理 - 您可以告诉程序包中的程序包管理器它所依赖的其他程序包,以便它们可以安装(如果它们不是这样)。您可以使用 setuptools 执行此操作,此处有许多资源。在这种情况下,您可以期望在系统范围内安装命令行工具,并且可以从应用程序中调用它们。
如果无法做到这一点,您甚至可以包含所需工具的源代码,并为用户提供如何编译它们的说明(如果需要,可以在应用程序目录中)。对于大多数现代发行版来说,这是一个相当轻松的过程,但不是最佳实践。
另一个注意事项:os.system
正在阻塞,它会生成一个新进程并等待它退出。您无法轻松获取stdout或stderr输出或与之交互。您应该查看subprocess
模块(它是Python标准库的一部分)或envoy
(第三方模块),它为子进程模块提供了一个简化的(可以说是)更强大的接口
如果你想"自动化"命令行工具,pexpect
让您的生活更轻松。