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

使用os.path.abspath获取poppler路径报错,直接赋值却正常,如何解决?

解决pdf2image指定poppler路径时的PDFInfoNotInstalledError问题

问题场景

已在本地正确安装poppler,但使用os.path.abspath()生成路径并传给pdf2image时,出现以下错误:

pdf2image.exceptions.PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH?

报错代码示例:

import os

path = os.path.abspath("Project/Poppler/Release-22.12.0-0/poppler-22.12.0/Library/bin")
poppler_path = path

而直接硬编码绝对路径时脚本可正常运行:

poppler_path = r"C:\Users\Clement\Desktop\Project\Poppler\Release-22.12.0-0\poppler-22.12.0\Library\bin"

问题原因

os.path.abspath()是基于**当前工作目录(CWD)**生成绝对路径的。如果脚本运行时的当前工作目录不是C:\Users\Clement\Desktop\,生成的路径会指向错误位置,导致pdf2image无法找到poppler的可执行文件。

解决方案

1. 基于脚本自身目录生成正确路径

利用__file__获取脚本所在的绝对目录,再拼接poppler的相对路径,确保无论脚本在哪个目录运行,路径都准确:

import os

# 获取当前脚本所在的绝对目录
script_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接poppler的相对路径(需确保该相对路径是相对于脚本所在位置的)
poppler_path = os.path.join(script_dir, "Project/Poppler/Release-22.12.0-0/poppler-22.12.0/Library/bin")

2. 验证并修正当前工作目录

先打印生成的路径和当前工作目录,确认是否匹配预期:

import os

path = os.path.abspath("Project/Poppler/Release-22.12.0-0/poppler-22.12.0/Library/bin")
print("生成的路径:", path)
print("当前工作目录:", os.getcwd())

如果输出的路径和硬编码的不一致,可手动切换工作目录到目标路径的上级目录:

os.chdir(r"C:\Users\Clement\Desktop")
path = os.path.abspath("Project/Poppler/Release-22.12.0-0/poppler-22.12.0/Library/bin")
poppler_path = path

3. 确保路径格式正确

Windows系统下路径的斜杠可能存在转义问题,可将生成的路径转为原始字符串格式:

import os

path = os.path.abspath("Project/Poppler/Release-22.12.0-0/poppler-22.12.0/Library/bin")
poppler_path = r"{}".format(path)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:55:41