鱼C论坛

 找回密码
 立即注册
查看: 1770|回复: 7

pyinstaller只打包主脚本

[复制链接]
发表于 2021-12-31 11:00:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
项目结构为一个主脚本(main.py)和很多子脚本(a.py,b.py等),但主脚本每次运行只根据输入调用一个子脚本,例如:如果输入是“a”,调用a.py;如果是“b”,调用b.py,因为经常会增加新功能,所以把这些信息放到配置文件里管理,主脚本读配置文件得知去调用哪个脚本。这样增加新功能时只需要改配置文件,和添加子脚本,其余脚本包括主脚本都不会有变动。
例如配置文件里是个字典{'a':'a.py','b':'b.py'}添加c功能后变为{'a':'a.py','b':'b.py','c':'c.py'} 主脚本中读取dict[input]得到需要映入的脚本名,然后隐式导入。

在打包过程中发现: 隐式导入需要修改打包配置----hidden-imports 且添加子脚本后需要再次打包,造成需要反复重新打包。目前打包的目的只是给个exe入口以及Python环境(所以不用embededPython来提供环境),暂时不需要考虑防止脚本被修改等问题,所以期望只打包主脚本,得到exe入口再调用子脚本.py完成功能。

没有找到相关操作的资料,来请教各位大大们,谢谢!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-31 11:50:30 | 显示全部楼层
说个思路,要把你的a.py,b.py编译成so文件或者dll文件,然后主代码里从so或者dll文件中调用相应的函数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-31 12:02:10 | 显示全部楼层
本帖最后由 hrpzcf 于 2021-12-31 12:03 编辑

--hidden-imports只是将未被自动检测到的脚本打包进去,你手动放进去结果也一样,为什么要重新打包?(除非你是打包成单文件?)
如果你要打包成单文件,你的main的逻辑可以改成从某一固定的相对目录比如./myscripts(即与exe同目录下的myscripts文件夹)用exec(f.read())方式运行程序,也可以import .myscripts.xxx,或者将./myscripts添加到sys.path,这样可以直接import xxx,后续直接将新脚本放到myscripts就可以。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-31 12:25:56 From FishC Mobile | 显示全部楼层
来看看学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-31 15:47:50 | 显示全部楼层
hrpzcf 发表于 2021-12-31 12:02
--hidden-imports只是将未被自动检测到的脚本打包进去,你手动放进去结果也一样,为什么要重新打包?(除非 ...

不是打包成单文件,是文件夹的那种,我这里试下来如果主脚本有隐式的import,如果不加到--hidden-imports一起打包,运行exe时是会报错的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-31 15:49:18 | 显示全部楼层
lightninng 发表于 2021-12-31 11:50
说个思路,要把你的a.py,b.py编译成so文件或者dll文件,然后主代码里从so或者dll文件中调用相应的函数。

可以试试哎,谢谢大大,鞠躬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-31 16:38:48 | 显示全部楼层
FC的注册很坑 发表于 2021-12-31 15:47
不是打包成单文件,是文件夹的那种,我这里试下来如果主脚本有隐式的import,如果不加到--hidden-imports ...
你的main的逻辑可以改成从某一固定的相对目录比如./myscripts(即与exe同目录下的myscripts文件夹)用exec(f.read())方式运行程序,也可以import .myscripts.xxx,或者将./myscripts添加到sys.path,这样可以直接import xxx,后续直接将新脚本放到myscripts就可以。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-4 18:21:21 | 显示全部楼层

我都试试,来工作了,晚些给各位大大们回复进展了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 12:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表