在py2exe中打开PyGTK Python模块错误

时间:2011-08-13 19:14:02

标签: python pygtk subprocess py2exe

我有一个用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文件中抛出错误吗?

1 个答案:

答案 0 :(得分:1)

问题在于路径。 RegistrationScreen.py(可能)在dist / library.zip中压缩,但调用它的代码在dist / RegestrationScreen.py中查找它。

我不知道对此最好的解决方案是什么... py2exe对于访问文件来说是一种痛苦。

此外,您可能不希望执行subprocess.Popen(["python", "RegistrationScreen.py"]),因为您无法保证您的用户将安装python并可在系统范围内访问。如果你真的需要一个单独的进程,那么也许你应该在RegistrationScreen.py上单独运行py2exe来创建一个单独的.exe,然后将它包含在你的主.exe的dist文件夹中?

我知道这有点令人费解,但它可能会奏效。正如我所说,可能有更好的方法。