[英]How to properly create a pyinstaller hook, or maybe hidden import?
我有两个包(比如dataread
和datainspector
),它们以某种方式没有被 PyInstaller 检测到。 因此,当正在运行的应用程序到达需要从这些包中导入模块时,应用程序就会终止。
最简单的解决方案是将dataread
和datainspector
复制到打包的应用程序中。 但这会破坏打包应用程序二进制版本的意图。
我读过关于隐藏导入和钩子的文章,我认为两者都可以解决问题,但我不确定使用哪一个。
有什么建议? PS:这两个包都可能包含嵌套目录。
挂钩是在 PyInstaller 找到导入语句时指定附加操作的文件。
如果您添加一个hook-data.py
文件,其中包含一行hiddenimports = ['_proxy', 'utils', 'defs']
,PyInstaller 将在看到import data
时检查它以查找其他import data
。
您必须通过--additional-hooks-dir
指定钩子目录的路径(如果您不想将源代码与仅编译文件混合,而是将它们保存在单独的目录中,这将很有用)。
更简单的解决方案是将--hidden-import=modulename
与 PyInstaller 脚本一起使用。 它将以静默方式添加modulename
作为 import 语句。
如果您想指定哪个导入需要哪些附加模块,则钩子会更好。 --hidden-import
作为一次性或调试更简单。
更多信息 - https://pyinstaller.readthedocs.io/en/stable/hooks.html
使用Auto-py-to-exe添加隐藏库。 在其他文件中添加Rasterio文件夹(C:/users/Admin/anaconda3/envs/name/Lib/site-packages/rasterio) ,然后转换为 exe。
它对我有用。 如果它说缺少其他一些库,则也添加该库的文件夹。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.