py2app 前脚本

4 投票
1 回答
638 浏览
提问于 2025-04-15 21:02

py2app的文档提到了一种叫做“prescripts”的东西,它是在主Python脚本运行之前由__boot__.py执行的。我没找到在setup.py文件或构建过程中简单指定任何prescript的方法。

不过,我确实手动“破解”了__boot__.py,在我的主_run(main_script)之前添加了另一个_run(prescript)命令,结果似乎运行得不错。不过,使用标准的py2app构建过程会更好。

我其实想做的是在主脚本启动之前,修改我的sites-packages.zip文件。这个prescript主要是检查服务器上的更新,如果有更新,就下载并覆盖site-packages.zip文件。这样比重新安装整个应用要快得多。

有没有什么好主意?

1 个回答

2

请查看文档:你的py2app.recipes包里必须包含一个食谱,这个食谱的check方法需要返回一个dict,里面要有一个'prescripts'的键,值是,引用如下:

一系列额外的Python脚本,这些脚本会在初始化主脚本之前运行。这个功能通常用来修改包含的模块,以便它们能在一个“冻结”的环境中正常工作。prescripts可以是模块名、文件名,或者包含Python代码的类文件对象(比如StringIO)。需要注意的是,如果使用了类文件对象,目前不会扫描它以查找额外的依赖项。

请查看内置食谱的源代码来获取示例。这个包(在你的机器上安装的版本)是你需要添加自己自定义食谱的地方。

撰写回答