You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyInstaller针对本地导入的hidden-import参数使用问题

PyInstaller打包Apryse SDK时ModuleNotFoundError的解决办法

问题详情

打包后运行exe出现以下报错:

File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
File "apryse_sdk\__init__.py", line 17, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
File "PDFNetPython3\__init__.py", line 17, in <module>
ModuleNotFoundError: No module named 'PDFNetPython'

主脚本导入语句:

from apryse_sdk import *

apryse_sdk/__init__.py中的嵌套导入:

from PDFNetPython import *

模块文件结构(位于C:\Program Files\Anaconda2022\Lib\site-packages\apryse_sdk):

Directory: C:\Program Files\Anaconda2022\Lib\site-packages\apryse_sdk

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         9/11/2023  12:56 PM                __pycache__
-a----          9/7/2023   1:13 PM       45508632 PDFNetC.dll
-a----          9/7/2023   1:13 PM             12 PDFNetPyLibInfo
-a----          9/7/2023   1:13 PM         658347 PDFNetPython.py
-a----          9/7/2023   1:13 PM        7536128 _PDFNetPython.pyd
-a----         9/11/2023   1:33 PM            474 __init__.py

解决办法

1. 用--hidden-import指定本地模块

--hidden-import参数完全适用于本地同目录模块,它的作用是强制PyInstaller将未被自动检测到的模块加入打包范围。执行打包命令时添加该参数:

pyinstaller --hidden-import=PDFNetPython your_script.py

2. 手动添加二进制依赖文件

除了Python模块,PDFNetC.dll、_PDFNetPython.pyd这类二进制文件是Apryse SDK运行必需的,PyInstaller通常不会自动识别,需要用--add-data参数(Windows下用;分隔路径,Linux/macOS用:):

pyinstaller --hidden-import=PDFNetPython ^
--add-data "C:\Program Files\Anaconda2022\Lib\site-packages\apryse_sdk\PDFNetC.dll;." ^
--add-data "C:\Program Files\Anaconda2022\Lib\site-packages\apryse_sdk\_PDFNetPython.pyd;." ^
--add-data "C:\Program Files\Anaconda2022\Lib\site-packages\apryse_sdk\PDFNetPyLibInfo;." ^
your_script.py

3. 编辑.spec文件实现自定义打包

如果命令行参数过多,可先生成.spec配置文件,再编辑内容:

  1. 生成.spec文件:
pyi-makespec your_script.py
  1. 打开生成的your_script.spec,修改以下部分:
    • 在hiddenimports列表中添加'PDFNetPython'
    • 在datas列表中添加所有依赖的非Python文件:
    datas=[
        ('C:\\Program Files\\Anaconda2022\\Lib\\site-packages\\apryse_sdk\\PDFNetC.dll', '.'),
        ('C:\\Program Files\\Anaconda2022\\Lib\\site-packages\\apryse_sdk\\_PDFNetPython.pyd', '.'),
        ('C:\\Program Files\\Anaconda2022\\Lib\\site-packages\\apryse_sdk\\PDFNetPyLibInfo', '.'),
    ]
    
  2. 用.spec文件打包:
pyinstaller your_script.spec

内容的提问来源于stack exchange,提问作者Sterling Butters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 07:35:28