pyinstaller找不到文件或文件夹no such file错误

pyinstaller这个坑货,折腾了2小时看了十几个教程。

 

1.先随便pyinstaller -F v1.py一下,会得到一个v1.spec

2.打开code.spec

(1)如果有多个同目录下的py文件直接添加到第一个列表中

(2)datas中要添加你的所有其他文件夹,列表中为一个元组,第一个元素就是目录路径,第二个元素是与生成的exe相对的路径

a = Analysis(['v1.py','F:\\work\\zdx\\game\\xxx\\cfg.py','F:\\work\\zdx\\game\\xxx\\utils.py'],
pathex=['F:\\work\\zdx\\game\\xxx'],
binaries=[],
datas=[('F:\\work\\zdx\\game\\xxx\\compute','compute'),
('F:\\work\\zdx\\game\\xxx\\resources\\audios','resources\\audios'),
('F:\\work\\zdx\\game\\xxx\\resources\\fonts','resources\\fonts'),
('F:\\work\\zdx\\game\\xxx\\resources\\images','resources\\images'),
('F:\\work\\zdx\\game\\xxx\\UI','ui')
],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
3.添加代码(这一步可能不需要,但还试一下),所有import的其他文件夹中的py文件
import sys
sys.path.append('./compute')
sys.path.append('./UI')
4.添加代码,读取资源文件的函数
def get_resource_path(relative_path):
if hasattr(sys, '_MEIPASS'):
return os.path.join(sys._MEIPASS, relative_path)
return os.path.join(os.path.abspath("."), relative_path)
相应的读取资源的地方都要改成如下
FONTPATH = os.path.join(os.getcwd(), get_resource_path('resources/fonts/Gabriola.ttf'))
5.最后一步,pyinstaller -F v1.spec
posted @ 2021-10-04 20:45  地表最强队队员  阅读(1301)  评论(0编辑  收藏  举报