2010-01-28 6 views
1

Я пытался упаковать свое приложение с py2exe. Приложение работает отлично, но не удается найти/использовать pywinauto. Я был, но я прибегая к помощи ничего не получаю, я теперь я полностью потерял ...exe ​​с 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)] 
         } 
       } 
    ) 

И вот на выводе при запуске ехе

 
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

Вам не нужно, чтобы многие из них включались в ваш сценарий установки ... как выглядят ваши импортные данные в mainForm.py? –

+0

Они идут как этого

 import sys import Errors try: from PyQt4 import QtCore, QtGui, uic import WordOps import Voice import WindowHandler except Exception as e: Errors.Import("mainForm.py", e) 
первая строка включает в себя необходимое для приложения для работы, вторая линия моих лучшая пытается сделать приложение работает – masterLoki

ответ

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.

+0

я изменил импорт и параметры в файле настройка, но теперь я получаю сообщение о том, что pywinauto \ controls \ win32_controls.pyc не может найти win32функции. Эта папка находится на корневой папке pywinauto. Теперь я импортирую его так: «из pywinauto import win32functions». Все еще не работает. Добавление pywinauto для включения в настройку не влияет. Также py2exe генерирует поврежденный zip-файл при использовании «'bundle_files': 1" – masterLoki

+1

Вы можете удалить bundle_files; попробуйте добавить pywinauto в 'packages' (еще один вариант py2exe) вместо' includes'. Также попробуйте добавить зависимости pywinauto: 'ctypes',' SendKeys', 'PIL' и' elementtree' –

+0

Добавление packages:['pywinauto'] сделал трюк. Большое спасибо за вашу помощь :) – masterLoki

Смежные вопросы