1

我一直在尝试用 py2exe 打包我的应用程序。该应用程序运行良好,但始终无法找到/使​​用 pywinauto。我一直在谷歌搜索,但我什么也没得到,我现在完全迷路了......

这是打包脚本:

从 distutils.core 导入设置

设置(
  windows = ["mainForm.py"],
  数据文件=[
      ('', ['mainForm.ui']),
      ('', ['osk.sqlite'])
  ],
  选项 = {
              “py2exe”:{
                        “优化”:2,
                        “包括”:[
                          'sip'、'pyttsx.drivers.sapi5'、'win32com'、'xml.etree.ElementTree'、'sqlite3'、
                          'pywinauto'、'pywinauto.application'、'pywinauto.controls'、'pywinauto.tests'、'SendKeys'
                            ],
                          "类型库": [('{C866CA3A-32F7-11D2-9602-00C04F8EE628}', 0, 5, 0)]
                         }
              }
    )

这是运行exe时的输出

回溯(最近一次通话最后):
  文件“mainForm.py”,第 129 行,处于 changeState
  文件“mainForm.py”,第 230 行,在 setWriteMode
  FillApps 中的文件“mainForm.py”,第 105 行
  getWindowList 中的文件“WindowHandler.pyo”,第 26 行
NameError:未定义全局名称“pywinauto”

我希望有人能指出我正确的方向。

提前致谢

4

1 回答 1

1

根据我的经验,py2exe 以一种奇怪的方式处理导入。有时它很难找到链接导入(比如你 import WindowHandler, which imports pywinauto)。

我将从mainForm.py开始:

import sys
import WordOps 
import Voice 
import WindowHandler
from PyQt import QtCore, QtGui, uic

setup.py中,从这个开始:

options={'py2exe':{
                    'includes': ['sip'],
                    'bundle_files': 1
                  }
        }

确保您的程序在编译为 exe 之前可以正常运行,然后尝试运行 setup.py。当您在运行时开始出现错误时setup.py(如您发布的错误),向mainForm.py添加更多导入。因此,对于该错误,您的新标题将如下所示:

import sys
import WordOps 
import Voice 
import WindowHandler
from PyQt import QtCore, QtGui, uic
# imports for py2exe
import pywinauto

它不会破坏您的代码,因为它只是一个“未使用”的导入。继续这样做,直到 setup.py 工作。

于 2010-01-28T20:02:39.963 回答