使用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
相关产品推荐
相关产品推荐

