【问题标题】:Correct way to build python executable(in wxWidgets) so that it can be called from another wxWidgets application?构建 python 可执行文件(在 wxWidgets 中)以便可以从另一个 wxWidgets 应用程序调用它的正确方法?
【发布时间】:2023-04-03 06:43:01
【问题描述】:

我有两个 wxWidgets Python 应用程序 - t1 和 t2。两个应用程序的源代码目录结构如下:
图形用户界面/t1/...
图形用户界面/t2/...

我在 t1 中有一个用于启动 t2 的按钮。我正在尝试使用 pyinstaller 构建 t1 和 t2,以便可以从 t1 正确启动 t2。我在 GUI/t1/bin 目录中构建了 t1 和 t2。因此,存在的 t1.exe 和 t2.exe 如下:

GUI/t1/bin/dist/t1/t1.exe
GUI/t1/bin/dist/t2/t2.exe

我可以通过单击它们各自的可执行文件成功启动 t1 和 t2。但是,当我尝试从 t1 开始 t2 时,出现错误:

Traceback (most recent call last):  
  File "<string>", line 15, in <module>  
  File "c:\pyinstaller-2.0\PyInstaller\loader\iu.py", line 386, in importHook
    mod = _self_doimport(nm, ctx, fqname)  
  File "c:\pyinstaller-2.0\PyInstaller\loader\iu.py", line 480, in doimport
    exec co in mod.__dict__  
  File "bin\build\pyi.win32\jobmanager\out00-PYZ.pyz\wx", line 45, in <module>  
  File "c:\pyinstaller-2.0\PyInstaller\loader\iu.py", line 386, in importHook
    mod = _self_doimport(nm, ctx, fqname)  
  File "c:\pyinstaller-2.0\PyInstaller\loader\iu.py", line 480, in doimport
    exec co in mod.__dict__  
  File "bin\build\pyi.win32\jobmanager\out00-PYZ.pyz\wx._core", line 4, in <modu
le>  
  File "c:\pyinstaller-2.0\PyInstaller\loader\iu.py", line 409, in importHook
    raise ImportError("No module named %s" % fqname)  
ImportError: No module named _core_  

t2 从 t1 启动如下:

output = subprocess.check_output("../t2/t2.exe",stderr=subprocess.STDOUT)

我不确定是什么问题。从 t1 启动 t2 的正确方法是什么,或者我是否需要更改构建中的任何内容?将 t2.exe 复制到 dist/t1 并作为 subprocess.check_output("t2.exe",...) 启动也无济于事。

谢谢

【问题讨论】:

    标签:
    python
    wxpython
    pyinstaller