Closed juntaosun closed 1 year ago
昨晚更新了,再去看 readme,新增第三部分。用里面的 spec 模板,把 numpy 加到自定义复制模块中。
仔细对比了一下 readme新增第三部分,里面的 spec 模板,
manual_modules = ['numpy']
打包后运行成功,感谢~!
加 qq 1292756898 我看下
应该不用改的吧,加上 libs
实际是在这一部分做的:
# 把 a.datas 中不属于自定义的文件重定向到 libs 文件夹
temp = a.datas.copy(); a.datas.clear()
for dst, src, type in temp:
c1 = (dst == 'base_library.zip') # 判断文件是否为 base_library.zip
c2 = any([dst.startswith(f) for f in my_folders]) # 判断文件是否属于 my_folders
c3 = any([dst.startswith(f) for f in my_files]) # 判断文件是否属于 my_files
if any([c1, c2, c3]):
a.datas.append((dst, src, type))
else:
a.datas.append((path.join('libs', dst), src, type))
是的,其实是加上这句就行了: manual_modules = ['numpy']
以后打包直接用那个 build-hello.spec
作为模板修改就可以了,已经写的很完善了
打包非常完美,生成的目录总算干净了,推荐大家使用
按你的教程,添加好runtime_hooks=['hook.py'], 然后打包,此时exe运行正常。 按教程把其它文件手动移到libs/目录中,按教程中仅留下如图所示的几个文件, 再次点击exe无法运行,报错如图,模块找不到啦~。~ 怎么解?大佬
hook.py:(用的就是你的那个hook.py文件) `import sys from pathlib import Path
BASE_DIR = Path(file).parent
for p in sys.path.copy(): relative_p = Path(p).relative_to(BASE_DIR) new_p = BASE_DIR / 'libs' / relative_p sys.path.insert(0, str(new_p))
sys.path.insert(0, str(BASE_DIR)) `