1

アプリにpy2exeを詰め込もうとしています。アプリケーションは正常に動作しますが、pywinautoの検索/使用に失敗し続けます。グーグルしていたのに何も得られず、今は完全に迷子になっています...

パッキングスクリプトは次のとおりです。

distutils.coreインポート設定から

設定(
  windows = ["mainForm.py"]、
  data_files = [
      (''、['mainForm.ui'])、
      (''、['osk.sqlite'])
  ]、
  オプション={
              "py2exe":{
                        「最適化」:2、
                        "含む":[
                          '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ファイルを実行するときの出力です

トレースバック(最後の最後の呼び出し):
  changeStateのファイル"mainForm.py"、行129
  setWriteModeのファイル"mainForm.py"、行230
  FillAppsのファイル"mainForm.py"、行105
  getWindowListのファイル「WindowHandler.pyo」、26行目
NameError:グローバル名'pywinauto'が定義されていません

誰かが私を正しい直接に向けてくれることを願っています。

前もって感謝します

4

1 に答える 1

1

私の経験から、py2exe は奇妙な方法でインポートを処理します。リンクされたインポートを見つけるのに問題がある場合があります( import のように、 importWindowHandlerをインポートします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 を実行してみてください。実行中にエラーが発生し始めたら(投稿したものなど)、 mainForm.pysetup.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 に答える