PyInstaller / Py2exe - 在单个文件编译中包含与第三方脚本的os.system调用

时间:2016-07-27 03:59:10

标签: python import py2exe pyinstaller os.system

我使用tkinter和pyinstaller / py2exe(任何一个都没问题),从我的python脚本创建一个可执行文件作为单个文件。我可以创建可执行文件,当不使用py2exe的bundle选项或pyinstaller的-F选项时,它可以根据需要运行。我使用os.system()在我的代码中运行第三方python脚本,并且可以简单地将这些脚本放在' dist' dir创建后才能使其工作。该命令有几个参数:输入文件,输出文件,线程数等等,所以我不确定如何使用import将其添加到我的代码中。不幸的是,这是在Windows上,因此一些同事可以使用GUI,并希望分发单个可执行文件。

**编辑:**我可以将它捆绑到一个可执行文件中,并提供脚本和exe。但是,在我的代码中运行第三方脚本时,问题仍然是os.system("python script.py -1 inputfile -n numbthreads -o outputfile..")。我有一位同事用它提供的脚本测试可执行文件,但是此时他们需要安装python,这是不可接受的,因为会有多个用户。

1 个答案:

答案 0 :(得分:0)

经过几天的测试后,我能够弄清楚如何解决这个问题。而不是os.system,我使用subprocess.call("script.py arg1 arg2 ..., shell=True)来运行我需要的每个脚本。此外,我在将脚本传输到Windows之前使用chmod +x(在linux中)以确保它们是可执行文件(有人可以告诉我这是否真的有必要)。然后,在我使用pyInstaller将其编译为单个文件之后,无需安装python,同事就能够运行该程序。我还能用blast可执行文件做同样的事情(用户不需要在本地安装blast - 如果exe也伴随着脚本的分发)。这避免了调用bipython ncbiblastncommandline和安装。