python - 使用pyinstaller冻结python代码时如何将lib_lightgbm.dll添加到exe中
问题描述
我正在创建一个导入 Microsoft LightGBM 的 python 代码的单文件可执行文件。我使用以下命令来创建 exe:
pyinstaller -F --hidden-import numpy.core._dtype_ctypes pro.py
创建exe并运行后,出现以下错误:
Exception: Cannot find lightgbm library file in following paths:
C:\Users\...\AppData\Local\Temp\_MEI61682\lightgbm\lib_lightgbm.dll
C:\Users\...\AppData\Local\Temp\lib_lightgbm.dll
C:\Users\...\AppData\Local\Temp\_MEI61682\lightgbm\compile\lib_lightgbm.dll
C:\Users\...\AppData\Local\Temp\_MEI61682\compile\lib_lightgbm.dll
C:\Users\...\AppData\Local\Temp\lib\lib_lightgbm.dll
C:\Users\...\AppData\Local\Temp\_MEI61682\compile\Release\lib_lightgbm.dll
C:\Users\...\AppData\Local\Temp\_MEI61682\compile\windows\x64\DLL\lib_lightgbm.dll
C:\Users\...\AppData\Local\Temp\Release\lib_lightgbm.dll
C:\Users\...\AppData\Local\Temp\windows\x64\DLL\lib_lightgbm.dll
[6352] Failed to execute script pro
我尝试lib_lightgbm.dll
使用选项添加:
--add-data lib_lightgbm.dll;\compile
这解决了安装 lightgbm 的机器上的错误,但在其他机器上,它给出了以下错误:
Traceback (most recent call last):
File "site-packages\PyInstaller\loader\pyiboot01_bootstrap.py", line 149, in __init__
File "ctypes\__init__.py", line 348, in __init__
OSError: [WinError 126] The specified module could not be found
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "pro.py", line 9, in <module>
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "c:\users\...\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
File "site-packages\lightgbm\__init__.py", line 8, in <module>
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "c:\users\...\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
File "site-packages\lightgbm\basic.py", line 34, in <module>
File "site-packages\lightgbm\basic.py", line 29, in _load_lib
File "ctypes\__init__.py", line 426, in LoadLibrary
File "site-packages\PyInstaller\loader\pyiboot01_bootstrap.py", line 151, in __init__
__main__.PyInstallerImportError: Failed to load dynlib/dll 'C:\\Users\\...\\AppData\\Local\\Temp\\_MEI7562\\lightgbm\\../compile\\lib_lightgbm.dll'. Most probably this dynlib/dll was not found when the application was frozen.
[4060] Failed to execute script pro
谁能帮我解决这个问题?
解决方案
推荐阅读
- php - 如果另一个模型的列具有特定值,则更改模型的列
- r - R用星期几创建一个虚拟变量
- linux - Windows 上的 gcc 编译器
- mysql - 如何在使用逗号将键值存储在单个单元格中的情况下使用 group by
- haskell - Haskell折叠无限列表,使用head
- python - assert_called_with 失败,错误消息为空
- mysql - 需要数据库托管的建议
- testng - 在类路径中找不到类:即使在 testng.xml 中为类提到了完整的层次结构,也会引发异常
- azure - Azure 逻辑应用成功执行但未收到电子邮件
- angular - Angular 7 - 提交表单时如何在表单的子组件中显示错误消息