4

私のシステム:

Windows 7、x64、Python 3.3.1、インストーラーを使用する PyQt4 4.10 (py3.3-Qt5.0.1-x64)、cx_freeze 4.3.1 (win-amd64-py3.3)

何がうまくいったか:

  • ターミナルで..python33\lib\site-packages\cx_freeze\samplesフォルダー(およびそれぞれのサンプルフォルダー)に移動して実行しますpython setup.py build

  • これは次のように機能しました: \simpleand \tkinter(他の場所で間違っていないことを確認するため)

問題:

  • しかし、私の目標は、私の PyQt4 プロジェクトの実行可能ファイル/パッケージを取得することなので、\PyQt4例で同じことを試しました (ところで、PyQt4app.py は Python アプリケーションとして完全に動作します)。

  • \PyQt4 >>> python setup.py build最初は機能しません: 生成さPyQt4app.exeれた結果を実行すると、エラーが発生し、不足しているパッケージ「re」が要求されます

  • その後、ファイルに「re」を含めていsetup.pyます。( options = {"build_exe" : {"includes" : ["atexit", "re"]}})

  • エラーをスローせずに .exe を生成するようになりましたが、この .exe を実行しても何も実行されず、黙ってしまうだけです...

  • cx_freeze は正しい依存関係を見つけたようです: python33.dll, Qt5Core.dll, Qt5Gui.dll, (とりわけ: sip, unicodedata など) が存在しますPyQt4.QtCore.pydPyQt4.QtGui.pyd

ここにsetup.py(変更なし、「re」が含まれ、コメントが削除されていることを除く)

import sys

from cx_Freeze import setup, Executable

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(
        name = "simple_PyQt4",
        version = "0.1",
        description = "Sample cx_Freeze PyQt4 script",
        options = {"build_exe" : {"includes" : ["atexit", "re"]}},
        executables = [Executable("PyQt4app.py", base = base)])

私が間違っている提案はありますか?どのような追加情報が役立ちますか?

  • ところで。- docs.python.org/3/faqはpy2exeへのリンクです- しかし、py2exeは Python 3.x では動作しません!?

編集:base = Noneバッチファイルを介して.exeを設定して実行することで、コンソール出力を取得できました。出力は次のとおりです: Failed to load platform plugin "windows". Available platforms are:(出力の終わり - リストなどはありません)。

では、このプラグインをロードする場所と方法は?

4

1 に答える 1

4

わかりました-回避策を見つけました:

qwindows.dllWITH そのフォルダー\platforms\qwindow.dll..\python33\lib\site-packages\PyQt4\plugins.exe があるフォルダーにコピーします。今では動作します。

編集:

setup.pyの見た目は次のようになり、他のケースにも適用できるようです。

import sys

from cx_Freeze import setup, Executable

base = "Win32GUI"
path_platforms = ( "..\..\..\PyQt4\plugins\platforms\qwindows.dll", "platforms\qwindows.dll" )
build_options = {"includes" : [ "re", "atexit" ], "include_files" : [ path_platforms ]}

setup(
    name = "simple_PyQt4",
    version = "0.1",
    description = "Sample cx_Freeze PyQt4 script",
    options = {"build_exe" : build_options},
    executables = [Executable("PyQt4app.py", base = base)]
    )
于 2013-04-21T15:25:11.810 に答える