我制作了一个简单的脚本,将当前目录中的pdfs转换为图像。我想把它变成一个独立的.exe文件,这样没有在他的电脑上安装python的人可以使用它。
问题是pyinstaller未能将poppler包含到exe文件中,因此pdf2image不能正确运行,生成的pdf2image也会失败。以下是错误消息:
pdf2image.exceptions.PDFInfoNotInstalledError:无法获得页面计数。是否已安装并已安装PATH? 32024未能执行脚本bulk_pdf2img
我目前正在开发conda环境,其中安装了pyinstaller、pdf2image和conda install命令中的poppler。当我从提示符执行python脚本时,它工作得很好,但是当脚本被转换为exe时,它会引发上述错误。
我尝试了以下方法:
添加--add-data 选项
我尝试通过这样做来添加poppler数据。
$ pyinstaller --onedir --add-data="C:/Users/myusername/anaconda3/pkgs/poppler-0.89.0-h20e2fe3_4/Library/include/poppler/*;./poppler" bulk_pdf2img.py不起作用。
添加additional-hooks-dir 选项
我添加了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也不管用。
我搜索了几乎所有的堆栈溢出问题,这些问题显然与我的问题完全相同,但却找不到任何有效的解决方案。我现在该怎么做?
发布于 2021-02-22 16:00:27
来自文档
然后,您必须将
bin/文件夹添加到PATH中,或者在convert_from_path中使用poppler_path = r"C:\path\to\poppler-xx\bin"作为参数。
现在,如果您使用--onefile选项pyinstaller,它将在执行过程中将所有文件解压到一个临时文件夹中,您可能需要查看这个回答和相关的帖子,以获得正确的路径。
您可以执行以下任一操作
poppler的poppler文件夹添加到PATH。
os.environ"PATH"+=os.pathsep+os.path.join('path/to/poppler','bin')https://stackoverflow.com/questions/66303806
复制相似问题