从 ubuntu docker 图像中删除 perl 会导致 pyodbc 失败

Removing perl from ubuntu docker image cause pyodbc to fail

运行 进入预期问题,尝试使用 python 和 pyodbc 准备基于 ubuntu 20.04 的图像。

FROM ubuntu:20.04

# install mssql odbc driver

RUN apt-get update && apt-get upgrade -y && apt-get install -y curl gnupg build-essential

RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
    && curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

RUN apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql17 unixodbc-dev

# install python 3.7.9 from source

RUN apt-get install -y python3 python3-pip

# clean up

# this does not work
RUN apt-get remove -y perl curl gnupg && apt-get autoremove -y

# this works
# RUN apt-get remove -y curl gnupg && apt-get autoremove -y

RUN pip3 install pyodbc

如果不删除perl,安装pyodbc是没有问题的,但是如果删除perl,就会出现如下错误:

src/pyodbc.h:56:10: fatal error: sql.h: No such file or directory

好像 unixodbc-dev 由于某种原因也被删除了。有人 运行 以前参与过这个吗?如果需要 perl,apt-get 不会阻止它被删除吗?或者我需要安装一组不同的 c 绑定才能完成这项工作。

安装 msodbcsql17 后 运行ning apt-get install -f 也无济于事。

谢谢。

unixodbc-dev 作为传递依赖项安装,并在不再需要时自动删除,即在删除 perl 之后。您需要明确安装它:

RUN apt-get install -y unixodbc-dev

有关详细信息,请参阅以下错误报告:https://github.com/mkleehammer/pyodbc/issues/441