【问题标题】:problem in executable created with py2exe使用 py2exe 创建的可执行文件中的问题
【发布时间】:2011-04-11 15:10:08
【问题描述】:

我有一个用 python 编写的应用程序,它使用 pygtk 来构建 GUI,还包括一些 glade 文件用于窗口构建。

我的问题是我的应用程序在我从 cmd 运行时工作正常,但是当我使用 py2exe 创建一个 exe 时,应用程序没有启动,但它创建了我在应用程序中为日志编写的空日志文件。

我的 setup.py 看起来像:

from distutils.core import setup
import os
import pygtk
import py2exe

setup(
name = 'ABC',
description = 'blah blah blah',
author = 'XYZ',
version = '0.1',

windows = [
              {
                  'script': 'filename.py',
                  'icon_resources': [(1, "logo.ico")],
              }
          ],


options = {
              'py2exe': {
                  'packages':'encodings',
                  'includes': 'cairo, pango, pangocairo, atk, gobject,gio',
              }
          },
data_files=[
               'logo.png', 'bg.png', 'completed.png', 'down.png','up.png',
               'processing.gif', 'cygcrypto-0.9.8.dll', 'cyggcc_s-1.dll', 
               'cygiconv-2.dll', 'cygpopt-0.dll', 'cygssp-0.dll', 'cygwin1.dll',
               'cygz.dll', 'prog.exe','prog2.exe', 'prog3.exe',
               'Login.glade', 'settings_lib.glade', 
               'Microsoft.VC90.CRT.manifest', 'msvcm90.dll','etc.zip',
               'lib.zip', 'msvcp90.dll', 'msvcr90.dll', 'share.zip'
           ])  

可能是什么问题?

【问题讨论】:

  • 你试过cx_freeze吗?我尝试使用py2exe,但它对我来说根本不起作用(我正在制作一个 PyQt4 应用程序)。 cx_freeze 确实 工作,但我仍然不知道为什么py2exe 没有...

标签: python pygtk


【解决方案1】:

在使用 py2exe 和 py2app 等工具时,我也遇到过很多次这样的问题。

IIRC,很多时候它是由于双击 .exe 时 Python 进程的工作目录非常不同造成的。您可能需要在 Python 程序的启动中添加一些代码来记录 os.getcwd() 的值

另一件棘手的事情是,您必须确保 py2exe 捆绑在您的程序正在使用的所有 Python 模块中。从命令行运行时,您使用的是包含所有这些模块的 Python。双击 .exe 时,您使用的是捆绑到可执行文件中的 Python 以及您在 setup.py 中明确列出的模块——很容易错过。要找到这一点,您可以在导入周围放置 try/except 子句,然后将 ImportError 异常记录到文件中。

【讨论】:

  • 谢谢 Marc,得到了问题,实际上问题在于导入 glade 模块。我正在尝试解决同样的问题,我应该怎么做才能解决这个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
  • 2014-06-02
  • 2019-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多