Python 使用pdf2image时,如何将poppler包含到pyinstaller生成的exe中?
我制作了一个简单的脚本,将当前目录中的PDF转换为图像。我想把它变成一个独立的Python 使用pdf2image时,如何将poppler包含到pyinstaller生成的exe中?,python,pdf,conda,pyinstaller,poppler,Python,Pdf,Conda,Pyinstaller,Poppler,我制作了一个简单的脚本,将当前目录中的PDF转换为图像。我想把它变成一个独立的.exe文件,这样电脑上没有安装python的人就可以使用它了 问题是pyinstaller未能将poppler包含到exe文件中,因此pdf2image无法正确运行,并且生成的exe失败。以下是错误消息: pdf2image.exceptions.PDFInfoNotInstalledError:无法获取页面 计数poppler是否已安装并在路径中?[32024]未能执行 脚本bulk_pdf2img 我目前正在co
.exe
文件,这样电脑上没有安装python的人就可以使用它了
问题是pyinstaller
未能将poppler
包含到exe文件中,因此pdf2image
无法正确运行,并且生成的exe失败。以下是错误消息:
pdf2image.exceptions.PDFInfoNotInstalledError:无法获取页面
计数poppler是否已安装并在路径中?[32024]未能执行
脚本bulk_pdf2img
我目前正在conda环境中工作,该环境通过conda install
命令安装了pyinstaller
和pdf2image
和poppler
。当我从提示符执行python脚本时,它工作得很好,但是当脚本转换为exe时,它会引发上述错误
我尝试了以下方法:
1。添加--添加数据
选项
我试图通过这样做添加poppler
数据
$ pyinstaller --onedir --add-data="C:/Users/myusername/anaconda3/pkgs/poppler-0.89.0-h20e2fe3_4/Library/include/poppler/*;./poppler" bulk_pdf2img.py
不起作用
2。添加附加挂钩目录
选项
我添加了projectdirectory/hooks/hook-pdf2image.py
,其中
from PyInstaller.utils.hooks import collect_all
data, binaries, hiddenimports = collect_all('pdf2image')
跑进去
$ pyinstaller --onefile --additional-hooks-dir=hooks bulk_pdf2img.py
也不起作用
我在谷歌上搜索了几乎所有的Stackoverflow问题,这些问题显然与我的问题完全相同,但找不到任何有效的解决方案。我现在该怎么办?来自
然后,您必须将bin/
文件夹添加到PATH
或使用poppler\u PATH=r“C:\PATH\to\poppler xx\bin”
作为convert\u from\u PATH
中的参数
现在,如果您正在使用pyinstaller
的--onefile
选项,它将在执行过程中将所有文件解压到一个临时文件夹中,您可能需要查看此文章和相关文章,以获得正确的路径
您可以执行以下任一操作
- 在开头执行此操作,将
的poppler
文件夹添加到bin
PATH
os.environ[“PATH”]+=os.pathsep+os.PATH.join('PATH/to/poppler','bin'))
-
pdf2image.convert_from_path('path/to/pdf',poppler_path=r“path\to\poppler\bin”)
poppler\u PATH=r“C:\PATH\to\poppler xx\bin”
时,pdfinfo.exe无法找到相关的.dll文件。如果只指定pdfinfo.exe的bin/location,它就不起作用。我用一种丑陋的方法解决了这个问题,即手动复制粘贴C:\Users\my\u username\anaconda3\envs\my\u envname\Library\bin中的所有.dll文件,但在将来,我会尝试在运行时设置PATH env变量。