我一直在尝试用py2exe打包我的应用程序。该应用程序工作正常,但它一直无法找到/使用pywinauto。我一直在谷歌上搜索,但我什么都没得到,我现在已经完全迷失了......
这是包装脚本:
from distutils.core import setup setup( windows = ["mainForm.py"], data_files=[ ('', ['mainForm.ui']), ('', ['osk.sqlite']) ], options = { "py2exe":{ "optimize": 2, "includes": [ 'sip', 'pyttsx.drivers.sapi5', 'win32com', 'xml.etree.ElementTree', 'sqlite3', 'pywinauto', 'pywinauto.application', 'pywinauto.controls', 'pywinauto.tests', 'SendKeys' ], "typelibs": [('{C866CA3A-32F7-11D2-9602-00C04F8EE628}', 0, 5, 0)] } } )
这是运行exe
时的输出Traceback (most recent call last): File "mainForm.py", line 129, in changeState File "mainForm.py", line 230, in setWriteMode File "mainForm.py", line 105, in FillApps File "WindowHandler.pyo", line 26, in getWindowList NameError: global name 'pywinauto' is not defined
我希望有人能指出我的正确方向。
提前致谢
答案 0 :(得分:1)
根据我的经验,py2exe以奇怪的方式处理导入。有时它无法找到链接导入(例如导入WindowHandler
,导入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工作。