首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >要安装pyodbc和pythonnet,我应该拉取哪个docker镜像?

要安装pyodbc和pythonnet,我应该拉取哪个docker镜像?
EN

Stack Overflow用户
提问于 2021-03-03 22:06:30
回答 1查看 142关注 0票数 0

我正在尝试对接一个以前部署在windows上的应用程序,我想知道我应该使用什么python镜像来解决安装pyodbc和pythonnet的问题。我的要求:

pyodbc==4.0.25 pythonnet==2.4.0

我得到的pyodbc错误状态:

代码语言:javascript
复制
src/pyodbc.h:56:10: fatal error: sql.h: no such file or directory

pythonnet错误:找不到与pythonnet==2.4.0匹配的发行版

我的Dockerfile看起来像这样:

代码语言:javascript
复制
FROM python:3.6
WORKDIR /opt

# create a virtual environment and add it to PATH so that it is applied for all subsequent run and cmd calls
ENV VIRTUAL_ENV=/opt/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"

COPY requirements.txt 
COPY src ./src

RUN pip install --no-cache-dir -r requirements.txt
cmd python src/automation/interface/app.py

我尝试拉取一个windows-server-core镜像,但得到一个错误消息,说找不到该镜像,而且我也找不到任何其他运行正常的基于windows的镜像。我需要解决这个问题,因为我的应用程序构建并导入了一个c#应用程序,为此我需要pythonnet。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2021-03-03 22:18:07

这是一个您可以使用的Dockerfile

代码语言:javascript
复制
FROM python:3.6
WORKDIR /opt

# Install Mono for pythonnet.
RUN apt-get update \
    && apt-get install --yes \
        apt-transport-https \
        dirmngr \
        clang \
        gnupg \
        ca-certificates \
        # Dependency for pyodbc.
        unixodbc-dev \
    && apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF \
    && echo "deb http://download.mono-project.com/repo/debian stretch/snapshots/5.20 main" | tee /etc/apt/sources.list.d/mono-official-stable.list \
    && apt-get update \
    && apt-get install --yes \
        # https://github.com/pythonnet/pythonnet/issues/939#issuecomment-520904067
        # https://github.com/jonemo/pythonnet-docker/blob/master/_dockerfiles/python3.6.10-mono5.20-pythonnet2.5.0
        mono-devel=5.20\* \
    && rm -rf /var/lib/apt/lists/*

# create a virtual environment and add it to PATH so that it is applied for all subsequent run and cmd calls
ENV VIRTUAL_ENV=/opt/venv
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN python3 -m venv $VIRTUAL_ENV \
    # From here on, use virtual env's python.
    && python -m pip install --no-cache-dir --upgrade pip setuptools wheel \
    # Dependency for pythonnet.
    && python -m pip install --no-cache-dir pycparser \
    && python -m pip install --no-cache-dir "pyodbc==4.0.25" "pythonnet==2.4.0"

此Dockerfile安装Mono运行时,这似乎是linux上的pythonnet所必需的。它还通过安装unixodbc-dev (请参见mkleehammer/pyodbc#441)来解决缺少的sql.h文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66458663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档