我試圖找出如何加載動態/隱藏進口與PyInstaller,到目前爲止,我得到這個簡單的結構:如何添加動態python模塊到PyInstaller的規格?
首先,我得到了一個框架包加入到我的PYTHONPATH居住在d:\Sources\personal\python\framework
那包被許多我的Python項目,特別是,它與下面的簡單的項目,我要打包
Main project
├───data <- Pure static data
├───plugins <- Dynamic modules which uses framework's modules
├───resources <- Static data+embedded (generated by pyqt), used by plugins
│ ├───css
│ ├───images
| resources.py
| resources.qrc
main.py <- Uses framework's modules to load plugins dynamically
我的規格文件看起來像這樣用
問題是當我試圖隱藏的進口增加了分析(...,hiddenimports = [],...)的hiddenimports名單,我試過到目前爲止這樣的:
hiddenimports=['d:\\sources\\personal\\python\\pyqt\\plugins']
hiddenimports=['d:\\sources\\personal\\python\\pyqt\\plugins\\*']
hiddenimports=['plugins']
也試過上市使用絕對路徑作爲單獨的文件:
hiddenimports=[
'd:\\sources\\personal\\python\\pyqt\\pyshaders\\plugins\\api.py',
'd:\\sources\\personal\\python\\pyqt\\pyshaders\\plugins\\config.py',
'd:\\sources\\personal\\python\\pyqt\\pyshaders\\plugins\\plugins_actions.py',
'd:\\sources\\personal\\python\\pyqt\\pyshaders\\plugins\\plugins_dialogs.py',
'd:\\sources\\personal\\python\\pyqt\\pyshaders\\plugins\\plugins_docks.py',
'd:\\sources\\personal\\python\\pyqt\\pyshaders\\plugins\\plugins_post_init.py',
'd:\\sources\\personal\\python\\pyqt\\pyshaders\\plugins\\plugins_toolbar.py'
]
而且還試圖將其加載爲模塊封裝(__init__.py
生活在插件文件夾)
hiddenimports=[
'plugins.api',
'plugins.config',
'plugins.plugins_actions',
'plugins.plugins_dialogs',
'plugins.plugins_docks',
'plugins.plugins_post_init',
'plugins.plugins_toolbar'
]
也試過collect_submodules
hiddenimports=collect_submodules('plugins')
沒有這些嘗試的工作和文件夾插件ISN」 t被正確地添加到dist(當我說'正確'時,我猜pyinstaller會分析這些隱藏插件使用的導入方法,遞歸地分析它們的依賴關係並複製* .pyc文件)...所以,我想知道如何我可以做廣告嗎? d正確地「隱藏」模塊,這些模塊被動態加載到pyinstaller的規範中。
你可以嘗試使用['TOC'(HTTPS將在['pure'(https://pythonhosted.org/PyInstaller/spec-files.html#spec-file-operation)依賴的文件: //pythonhosted.org/PyInstaller/advanced-topics.html#toc-class-table-of-contents)。 – Repiklis
可能碰到了這個問題(https://github.com/pyinstaller/pyinstaller/issues/2009)? –
你嘗試使用PyInstaller掛鉤(https://pyinstaller.readthedocs.io/en/stable/hooks.html)?它們完全是爲此目的而設計的。 – void