您必須在Windows環境下運行PyInstaller yourfile.spec。 我可以共享一個我正在使用的spec文件,只是作爲一個例子。
# -*- mode: python -*-
import os
from os.path import join
from kivy import kivy_data_dir
from kivy.deps import sdl2, glew
from kivy.tools.packaging import pyinstaller_hooks as hooks
block_cipher = None
kivy_deps_all = hooks.get_deps_all()
kivy_factory_modules = hooks.get_factory_modules()
datas = [
(join('common', '*.ini'), 'common')
]
# list of modules to exclude from analysis
excludes_a = ['Tkinter', '_tkinter', 'twisted', 'docutils', 'pygments']
# list of hiddenimports
hiddenimports = kivy_deps_all['hiddenimports'] + kivy_factory_modules
# binary data
sdl2_bin_tocs = [Tree(p) for p in sdl2.dep_bins]
glew_bin_tocs = [Tree(p) for p in glew.dep_bins]
bin_tocs = sdl2_bin_tocs + glew_bin_tocs
# assets
kivy_assets_toc = Tree(kivy_data_dir, prefix=join('kivy_install', 'data'))
source_assets_toc = Tree('images', prefix='images')
assets_toc = [kivy_assets_toc, source_assets_toc]
tocs = bin_tocs + assets_toc
a = Analysis(['yourmain.py'],
pathex=[os.getcwd()],
binaries=None,
datas=datas,
hiddenimports=hiddenimports,
hookspath=[],
runtime_hooks=[],
excludes=excludes_a,
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe1 = EXE(pyz,
a.scripts,
name='mywindowsapplication',
exclude_binaries=True,
icon=join('images', 'mywinapp.ico'),
debug=False,
strip=False,
upx=True,
console=False)
coll = COLLECT(exe1,
a.binaries,
a.zipfiles,
a.datas,
*tocs,
strip=False,
upx=True,
name='mywinapp')
將'myfile.spec'文件放在'yourmain.py'文件所在的同一目錄中。然後從該目錄運行PyInstaller myfile.spec。構建和dist文件夾將被創建。在dist文件夾中,您可能會發現您的exe文件。 希望這會讓你走。
您的代碼使用外部模塊?我說是因爲我的主要問題是我不知道如何將python的外部模塊(例如icalendar)添加到.spec文件。此外,我不知道如何添加應用程序中使用的圖像(kivy應用程序使用main.py目錄的圖像)。 –
是的,我使用了很多外部模塊。這將由腳本收集。您可以通過數據指令添加圖像。在我的環境中,圖像位於「常用」子文件夾中。 –
添加資產tocs時,如何添加多個_files_而不是follders? – Nearoo