我有一个用Python 2.7和PyGTK编写的项目,用py2exe进行编译。我有两个模块,“Launchpad.py”和“RegistrationScreen.py”。我需要从Launchpad.py打开RegistrationScreen.py。
我目前使用以下代码:
def open_registration(event, data=None):
subprocess.Popen(["python", "RegistrationScreen.py"])
我测试时工作正常 - 打开窗口时没有打开shell窗口。
但是,当我使用py2exe进行编译时,在执行创建的应用程序时出现以下日志错误。
Traceback(最近一次调用最后一次):文件“Launchpad.py”,第26行,in open_registration文件“subprocess.pyc”,第672行,在 init 中 文件“subprocess.pyc”,第882行,在_execute_child中WindowsError: [错误2]系统找不到指定的文件
如何修复代码,以便py2exe正确编译?还有另一种方法可以从Launchpad.py打开RegistrationScreen.py模块的窗口,它不会在最终的.exe文件中抛出错误吗?
答案 0 :(得分:1)
问题在于路径。 RegistrationScreen.py(可能)在dist / library.zip中压缩,但调用它的代码在dist / RegestrationScreen.py中查找它。
我不知道对此最好的解决方案是什么... py2exe对于访问文件来说是一种痛苦。
此外,您可能不希望执行subprocess.Popen(["python", "RegistrationScreen.py"])
,因为您无法保证您的用户将安装python并可在系统范围内访问。如果你真的需要一个单独的进程,那么也许你应该在RegistrationScreen.py上单独运行py2exe来创建一个单独的.exe,然后将它包含在你的主.exe的dist文件夹中?
我知道这有点令人费解,但它可能会奏效。正如我所说,可能有更好的方法。