如何将 Subprocess.popen() 与 pyinstaller 一起使用?

Posted

技术标签:

【中文标题】如何将 Subprocess.popen() 与 pyinstaller 一起使用?【英文标题】:How do i use Subprocess.popen() with pyinstaller? 【发布时间】:2016-12-21 21:54:42 【问题描述】:

我有一堆代码,其中一行是这样的(在 abc.py 中):

meow = subprocess.Popen("python ./Functions/cat.py")

现在当我使用pyinstaller.exe --onefile .\abc.py

它使我成为一个单独的 exe,它实现了所有功能,但包含上述行的功能不起作用。

如何在 exe 中包含 cat.py 并将其与 subprocess.popen 一起使用?

我的文件夹视图是

    -Project x
             -abc.py
             -Functions
                      -cat.py
                      -me.py
                      -ow.py

Cat.py 有一个函数可以监听输入并永远运行,直到我不得不根据某些输入停止它。

我正在运行 abc.py 并且基于某些输入我必须与 abc.py 一起运行 cat.py 并且在另一个输入上我必须停止 cat.py(使用 .kill()) 并且 abc.py 将仍在运行。

如何使用 pyinstaller 在单个 exe 中实现这一点?

【问题讨论】:

你最后有没有搞清楚? 【参考方案1】:

有几种方法可以处理此问题。我相信如果你用 import 语句调用 cat.py,它会很好地打包。另一种选择是创建一个 .spec 文件, 然后将 cat.py 打包为数据文件(or the entire function folder using the Tree class)。如果打包成数据文件,查看this post for coding to call it while developing as well as once its packaged by --onefile.

【讨论】:

以上是关于如何将 Subprocess.popen() 与 pyinstaller 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

subprocess.Popen与CLI提示交互

如何将字符串解析为 subprocess.Popen 的输入?

如何使用 subprocess.Popen 通过管道连接多个进程?

后台进程 subprocess.Popen 与管道

如何在 Python 2 中将字符串传递给 subprocess.Popen? [复制]

将变量传递给 Subprocess.Popen