PyInstaller 本地导入的隐藏导入参数

问题描述 投票:0回答:1

(接受更具描述性标题的建议)

我正在尝试使用 Pyinstaller 打包我的脚本,并在尝试运行 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 *

其中关联的

__init__.py
包含嵌套导入:

...
from PDFNetPython import *

注意,这里的

PDFNetPython
是本地导入的。查看文件结构:

 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

我一直看到

--hidden-import
参数的语法只是
--hidden-import=<Module>
但这是否适用于本地导入?在我看来并非如此。解决方法是什么?

python pyinstaller python-import python-module
1个回答
0
投票

你必须尝试2种解决方案....

1-它正在将您的 python 版本更新到最新版本的 python ....

2-如果它仍然出现,您应该获取该库并将其放在您的程序旁边并将其与它合并,以便能够从应用程序文件导入它

选择数字 2 是什么意思?

我的意思是你必须以图书馆为例,这是它的名字

the_library

并通过添加此附加命令将其插入或合并到您拥有的最终应用程序中

--add-data(你的库的路径)

此操作将获取库并将其与应用程序合并并正常生成一个文件

您还可以使用相同的命令添加文件而不仅仅是文件夹。

您可以使用

auto-py-to-exe
库来更轻松地将文件或文件夹合并和添加到您的应用程序中。

你可以通过这个命令安装它

pip 安装 auto-py-to-exe

之后仅通过调用名称来打开它auto-py-to-exe

你可以选择你的Python文件和图标

之后,您可以选择要添加的文件、文件夹或库,如下所示:

然后通过 添加文件夹

选择要添加的文件夹

之后你可以看到下面的命令,这个助手(auto-py-to-exe)使这个操作变得更容易。

重要提示:

并非所有时候您都必须像这样添加库......当我们在使用 PyInstaller 添加库时遇到问题时,我们会这样做

© www.soinside.com 2019 - 2024. All rights reserved.