[英]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.