12

スクリプトを実行可能ファイルに渡すのにいくつかの問題がありましたが、ようやくできました。主な問題は、PyInstallerが画像をGUIにロードしないことです。

これはどのように見えるべきかです:

それはどのように見えるべきか

これはどのように見えるかです:

それはどのように見えるか

そして、私は問題を見つけることができないようです、これは.specファイルです:

a = Analysis([os.path.join(HOMEPATH,'support\\_mountzlib.py'), os.path.join(HOMEPATH,'support\\useUnicode.py'), 'programa.py'],
             pathex=['img', 'C:\\Users\\Poblet\\ManGet\\HeyMang\\pyinstaller'])
pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=1,
          name=os.path.join('build\\pyi.win32\\Hey Mang!', 'Hey Mang!.exe'),
          debug=False,
          icon='heymang.ico',
          strip=False,
          upx=True,
          console=False )
coll = COLLECT( exe,
               Tree('C:\\Users\\Poblet\\ManGet\\HeyMang\\pyinstaller\\img'),
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name=os.path.join('dist', 'Hey Mang!'))
app = BUNDLE(coll,
             name=os.path.join('dist', 'Hey Mang!.app'))

そして、ここで言うように、それらの画像を取得することを想定しています。

Warnings written to C:\Users\Poblet\ManGet\HeyMang\pyinstaller\Hey Mang!\warnHey Mang!.txt
checking PYZ
rebuilding outPYZ1.toc because outPYZ1.pyz is missing
building PYZ outPYZ1.toc
checking PKG
rebuilding outPKG3.toc because outPKG3.pkg is missing
building PKG outPKG3.pkg
checking EXE
rebuilding outEXE2.toc because Hey Mang!.exe missing
building EXE from outEXE2.toc
I: SRCPATH [('heymang.ico', None)]
I: Updating icons from ['heymang.ico'] to c:\users\poblet\appdata\local\temp\tmpr34zmp
I: Writing RT_GROUP_ICON 0 resource with 76 bytes
I: Writing RT_ICON 1 resource with 1128 bytes
I: Writing RT_ICON 2 resource with 4264 bytes
I: Writing RT_ICON 3 resource with 9640 bytes
I: Writing RT_ICON 4 resource with 16936 bytes
I: Writing RT_ICON 5 resource with 67624 bytes

そして、それらはフォルダにありますが、何らかの理由で機能しません。

ソースコード全体(PyInstallerファイルを除く)はここにあります。

私はあなたの助けに感謝します。

4

4 に答える 4

17

私はこれを解決することができました、そしてこれは他の人にも役立つはずです:

  • 次のコマンドを使用して.specファイルを作成します。

    python Makespec.py --noconsole --icon="youricon.ico" --name="App name" program.py
    
  • .specファイル(例:アプリ名/アプリ名.spec)を開くと、次のように表示されます。

    a = Analysis([
            os.path.join(HOMEPATH,'support\\_mountzlib.py'),
            os.path.join(HOMEPATH,'support\\useUnicode.py'),
            'program.py'
        ], pathex=[
            'C:\\Your\\User\\Path\\To\\pyinstaller'
    ])
    pyz = PYZ(a.pure)
    exe = EXE(
            pyz,
            a.scripts,
            exclude_binaries=1,
            name=os.path.join('build\\pyi.win32\\App Name', 'App Name.exe'),
            debug=False,
            strip=False,
            upx=True,
            console=False , icon='youricon.ico'
    )
    coll = COLLECT(
            exe,
            a.binaries,
            a.zipfiles,
            a.datas,
            strip=False,
            upx=True,
            name=os.path.join('dist', 'Hey Mang!')
    )
    app = BUNDLE(coll, name=os.path.join('dist', 'Hey Mang!.app'))
    

    そして、a.binariesの前に、次のコードを追加する必要があります。

           Tree('C:\\Your\\App\\Path\\To\\Images'),
    

    したがって、PyInstallerが.specファイルを読み取ると、コンパイラはイメージをdistディレクトリに渡します。

  • 次に、画像をロードする.qrcファイルを作成する必要があります。そして、このファイルは次のようになります。

    <RCC>
      <qresource prefix="/" >
        <file>img/image1.png</file>
        <file>img/image2.png</file>
        <file>img/image3.png</file>
      </qresource>
    </RCC>
    

    あなたの画像で、明らかに。そして、これは次のコマンドを使用して.py形式にコンパイルする必要があります。

    pyrcc4 -o images.qrc images_qr.py
    
  • そして最後に、これをスクリプトに追加する必要があります。たとえば、次のようになります。

    import images_qr
    
    ...
    
    self.setWindowIcon(QtGui.QIcon(':/img/image1.png')) # The colon must be there
    

そして、コンパイルすると、次のように画像が正常に表示されるはずです。

これが同じ問題を抱えるすべての人に役立つことを願っています。適切な画像パスを指定し、画像にコロンを追加することを忘れないでください。

于 2012-07-18T17:36:40.550 に答える
3

以下のメソッドのクイックアップデート。まず、これはPyQt/Pysideアプリに画像を簡単に含めるための優れた方法です。Pysideの場合は、pyrcc4ではなくpyside-rcc.exeを使用するだけです。

第二に、私はTree(...)コマンドが必要でさえあると確信していません。この方法でdistフォルダーを作成した後、コマンドでコピーされたすべての画像ファイルを削除しましたTree..。実行可能ファイルは引き続き機能し、画像は正しく表示されます。したがって、qrcファイルを作成してpyrccプログラムを実行するだけで、Pythonモジュールがコロンプレフィックスでiamgeファイルパスに更新されていることを確認する必要があるかもしれません。

于 2014-04-29T15:44:36.160 に答える
2

Qt Designerを使用している場合は、アイコンや画像を簡単に追加できます。こちらのチュートリアルに従ってくださいhttp://doc.qt.io/qt-4.8/designer-resources.html

QtDesigner4.8.5およびPyinstaller2.1を使用してPySide1.2.2でテスト済み

于 2015-08-08T17:46:23.870 に答える
0

exeファイルをimageフォルダーがあるフォルダー、またはmain.pyと同じフォルダーに移動します。

これを見る

于 2020-01-27T07:39:48.253 に答える