我想把我为Windows编写的一些GUI程序带到Ubuntu软件中心。我正在使用几个外部命令行工具,我用
os.system(cmd)不,我想知道在Linux (Ubuntu)下如何做到这一点。我必须使用哪个相应的文件?在Windows中,该工具只能在我的程序的文件夹中访问,但没有安装,它是否会以同样的方式在Linux上工作?
我需要的工具都是生物信息学,primer3,blast,bowtie。
任何帮助都是非常感谢的!
发布于 2012-07-27 02:26:11
在Linux上,您通常将应用程序打包,以便可以使用系统包管理器进行安装(例如,用于基于Debian的发行版的.deb文件,包括用于RedHat的Ubuntu和.rpm )。你想这么做的一个原因是依赖管理--你可以在你的包中告诉包管理器它依赖于哪些其他包,这样它们就可以在它们不依赖的时候被安装。在这种情况下,命令行工具可以在系统范围内安装,并且可以从应用程序中调用它们。
如果这是不可能的,您甚至可以包含所需工具的源代码,并为用户提供如何编译它们的说明(如有必要,请在您的应用程序目录中)。对于大多数现代发行版,这是一个相当轻松的过程,但并不完全是最佳实践。
另一个注意事项:os.system正在阻塞,它会产生一个新进程并等待它退出。您不能轻松地获得stdout或stderr输出,也不能与其交互。您应该研究一下subprocess模块(它是Python标准库的一部分)或envoy (第三方模块),它为子流程模块提供了一个简化的、(可以说是)更强大的接口。
如果您想“自动化”命令行工具,pexpect会让您的工作更轻松。
https://stackoverflow.com/questions/11675111
复制相似问题