pdf2image在docker容器中失败



我有一个Python项目在docker容器中运行,但我不能让convert_from_path工作(从pdf2image库)。它可以在我的Windows PC上本地工作,但不能在基于linux的docker容器中工作。

我每次得到的错误是Unable to get page count. Is poppler installed and in PATH?

我的代码的相关部分是这样的

from pdf2image import convert_from_path
import os
from sys import exit
def my_function(file_source_path):
try:
pages = convert_from_path(file_source_path, 600, poppler_path=os.environ.get('POPPLER_PATH'))
except Exception as e:
print('Fail 1')
print(e)
try:
pages = convert_from_path(file_source_path, 600)
except Exception as e:
print('Fail 2')
print(e)
try:
pages = convert_from_path(file_source_path, 600, poppler_path=r'usrlocalbin')
except Exception as e:
print('Fail 3')
print(e)
print(os.environ)
exit('Exiting script')

在尝试1我试图引用保存在windows上的原始文件。基本上路径指的是'/code/poppler'它是一个绑定挂载,指的是

[snippet from docker-compose.yml]
- type: bind
source: "C:/Program Files/poppler-0.68.0/bin"
target: /code/poppler

在第2次尝试中,我只是试图让路径为空。在尝试3中,我尝试了一些我发现可以从其他用户本地工作的东西。

我的Dockerfile的相关部分是这样的

FROM python:3.10
WORKDIR /code
# install poppler
RUN apt-get update
RUN apt-get install poppler-utils -y
COPY ./requirements.txt ./
RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "./app.py"]

所以问题是我的Docker图像没有正确刷新,在关闭构建缓存并再次尝试中间选项与上述Dockerfile结合使用后。

所以Dockerfile中的RUN apt-get install poppler-utils -y+不引用pages = convert_from_path(file_source_path, 600)代码中的路径的组合将工作,因为它会在安装poppler-utils时自动找到PATH

绑定的挂载也可以从docker-compose.yml.env文件中删除。

相关内容

  • 没有找到相关文章

最新更新