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

PyInstaller/Py2exe - include os.system call with third party scripts in single file compilation

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

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

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