【问题标题】:Accessing Python interpreter from a PyInstaller bundle从 PyInstaller 包访问 Python 解释器
【发布时间】:2017-11-14 11:24:21
【问题描述】:

我有一个生成 Pronsole.py(3D 打印)的程序(假设它被称为“PROG”)。如果它只是由 Python 解释,它在 GNU/Linux 和 Windows 中运行良好。 这是行之有效的方法:

self.pronTranspProc=reactor.spawnProcess(self.pronProtProc, pythonPath, [pythonPath, "pronsole.py"], os.environ, self.pronPathPrintrun)

当 Python 是普通解释器时,“pythonPath”将只是该解释器的路径,因为它是 sys.executable。但是当使用 Pyinstaller 制作捆绑软件时,应用程序被冻结,sys.executable 不是解释器,而是由 pyinstaller 生成的可执行文件(在本例中,它将是 PROG.EXE 而不是 Python.exe)。该可执行文件嵌入了 python 解释器。问题是,如果我像 Python 解释器一样调用可执行文件,那么程序 PROG 会再次打开,这是逻辑,并且不会与打印机进行通信。

有没有办法调用嵌入式 Python 解释器?

到目前为止,我所达到的解决方案是将 Python 解释器作为一个简单文件添加到包中。但这是多余的,因为我知道解释器是嵌入的。有什么pythonic方法吗?

任何帮助将不胜感激

【问题讨论】:

  • 嘿@Vidusun,我也有类似的问题,你能解决你的问题吗?怎么样?

标签: python twisted pyinstaller packaging


【解决方案1】:

试试这个:

exec(open('external_script.py').read())

解释器只能被冻结的脚本引用,但是您可以使用 read 函数来执行其他脚本的主块。希望对您有所帮助!

【讨论】:

  • 但是这条线应该如何/在哪里?它应该在一个单独的(非冻结)文件中。但是这种情况下怎么称呼呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-17
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多