如何解决从ubuntu docker映像中删除perl导致pyodbc失败
尝试使用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之后也运行apt-get install -f
也无济于事。
谢谢。
解决方法
unixodbc-dev
是作为传递依赖项安装的,并且在不再需要时(即在删除perl之后)会自动删除。您需要明确安装它:
RUN apt-get install -y unixodbc-dev
有关详细信息,请参见以下错误报告:https://github.com/mkleehammer/pyodbc/issues/441
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。