Python 使用py2exe can';我找不到pywinauto

Python 使用py2exe can';我找不到pywinauto,python,py2exe,Python,Py2exe,我一直在尝试用py2exe打包我的应用程序。应用程序工作正常,但始终无法找到/使用pywinauto。我一直在谷歌上搜索,但我什么也没得到,我现在完全迷路了 以下是打包脚本: from distutils.core import setup setup( windows = ["mainForm.py"], data_files=[ ('', ['mainForm.ui']), ('', ['osk.sqlite']) ], options = {

我一直在尝试用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)] } } ) 从distutils.core导入设置 设置( windows=[“mainForm.py”], 数据文件=[ (“”,['mainForm.ui']), (“”,['osk.sqlite'])) ], 选项={ “py2exe”:{ "优化":二,, “包括”:[ “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 回溯(最近一次呼叫最后一次): 文件“mainForm.py”,第129行,处于变更状态 setWriteMode中第230行的文件“mainForm.py” 文件“mainForm.py”,第105行,在FillApps中 getWindowList中第26行的文件“WindowHandler.pyo” NameError:未定义全局名称“pywinauto” 我希望有人能直接给我指出正确的方向


提前感谢

根据我的经验,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工作。

根据我的经验,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工作。

您不需要在安装脚本中包含那么多内容。。。你的导入在mainForm.py中是什么样子的?它们是这样的第一行是应用程序工作所需的包含项,第二行是我努力使应用程序工作的最好方法你不应该在安装脚本中需要那么多包含项。。。你的导入在mainForm.py中是什么样子的?它们是这样的第一行是应用程序工作所必需的,第二行是我最好的尝试使应用程序工作我更改了导入和安装文件中的选项,但是现在我收到一个错误,告诉我pywinauto\controls\win32\u controls.pyc找不到win32函数。此库位于pywinauto根文件夹上。现在我像这样“从pywinauto导入win32functions”导入它。仍然不起作用。将pywinauto添加到安装程序中的includes无效。此外,py2exe在使用“bundle\u files”时会生成损坏的zip文件:1“您可以删除bundle\u文件;尝试将pywinauto添加到
包中(另一个py2exe选项),而不是
包含。还可以尝试添加pywinauto的依赖项:
ctypes
SendKeys
PIL
elementtree
添加
包:['pywinauto']
成功了。非常感谢您的帮助:)我更改了安装文件中的导入和选项,但现在我收到一个错误,告诉我pywinauto\controls\win32\u controls.pyc找不到win32函数。此库位于pywinauto根文件夹上。现在我像这样“从pywinauto导入win32functions”导入它。仍然不起作用。将pywinauto添加到安装程序中的includes无效。此外,py2exe在使用“bundle\u files”时会生成损坏的zip文件:1“您可以删除bundle\u文件;尝试将pywinauto添加到
包中(另一个py2exe选项),而不是
包含。还可以尝试添加pywinauto的依赖项:
ctypes
SendKeys
PIL
elementtree
添加
包:['pywinauto']
成功了。非常感谢您的帮助:)