それでは、私は簡単なのPyQtアプリmain.py
得たとしましょう:パッケージ化されたPythonアプリケーションをpyinstallerで整理するには?
import sys
from PyQt5 import QtWidgets
def main():
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QWidget()
w.resize(250, 150)
w.move(300, 300)
w.setWindowTitle('Simple')
w.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
をし、私は1つのフォルダにアプリをパッケージ化しmain.spec
を得た:
# -*- mode: python -*-
block_cipher = None
import inspect, os
current_path = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
a = Analysis(['main.py'],
pathex=[current_path],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='main',
debug=False,
strip=False,
upx=False,
console=True)
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=False,
name='main')
pyinstaller main.spec
をやっての結果はとなります
今、私はこの問題の解決策を提示しているこの面白いarticleを見つけました。この単純なmcveでここを再現しようとしていましたが、何らかの理由で私はある時点で立ち往生しています。ここで私が続いてきた段階です:上記main.spec
ファイル
3)Iにruntime_hooks=['.\\pyinstaller\\use_lib.py']
で私がruntime_hooks=[]
置き換えられてきた
import sys
import os
sys.path.append(os.path.join(os.path.dirname(sys.argv[0]), "lib"))
2):私はファイルpyinstaller\use_lib.py
を作成しました
1)
上記のスクリーンショットのような乱雑なファイル群を生成したpyinstaller main.spec
4)すべての依存ファイルをlibディレクトリに手動で移動しました。結果はです。
問題:実行しようとするとアプリがクラッシュします:
は、なぜあなたはそれがクラッシュだと思いますか?どのステップで私は台無しにしましたか?それを修正する方法を教えていただけますか?