首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头阿尔卑斯:错误加载MySQLdb模块

码头阿尔卑斯:错误加载MySQLdb模块
EN

Stack Overflow用户
提问于 2019-05-08 20:32:43
回答 2查看 13.4K关注 0票数 13

我正在用MariaDB构建一个基于的Django应用程序的图像,我不知道应该向Dockerfile添加哪些依赖项,以便我的应用程序能够正确地连接到DB。

代码语言:javascript
复制
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

我以为我做了。据我所读到的在本文中,在这一讨论中,mariadb-devAlpine中,相当于基于Debian的系统中的default-libmysqlclient-dev。此外,阿尔卑斯中的mysql-客户端包只是一个虚拟包(包含mariadb、mariadb等)。下面是Dockerfile

代码语言:javascript
复制
# pull official base image
FROM python:3.7-alpine

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# set work directory
WORKDIR /usr/src/cms

# install mysqlclient
RUN apk update \
    && apk add --virtual build-deps gcc python3-dev musl-dev \
    && apk add --no-cache mariadb-dev\
    && apk del build-deps

# install dependencies
RUN pip install --upgrade pip
RUN pip install pipenv
COPY ./Pipfile /usr/src/cms/Pipfile
RUN pipenv install --skip-lock --system --dev

# copy entrypoint.sh
COPY ./entrypoint.sh /usr/src/cms/entrypoint.sh

# copy project
COPY . /usr/src/cms/

# run entrypoint.sh
ENTRYPOINT ["/usr/src/cms/entrypoint.sh"]

我尝试添加mariadb-client,而不是使用mysql-client。我还试图添加RUN pip install django-mysql。似乎什么都没有改变。我成功地构建了Postgres Django应用程序,没有任何问题,但是,当涉及到MySQl vs MariaDB // Debian时,我感到很困惑。有洞察力吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-10 06:58:09

您似乎缺少了MySQLdb Python模块,您应该安装mysqlclient Python包:pip install mysqlclient

在高山上,pip将从源代码构建mysqlclient,因此在这个设置步骤中需要gccmusl-dev,因此需要将apk del build-deps推迟到安装了apk del build-deps模块之后。

修正了Dockerfile片段:

代码语言:javascript
复制
RUN apk update \
    && apk add --virtual build-deps gcc python3-dev musl-dev \
    && apk add --no-cache mariadb-dev

...

RUN pip install mysqlclient  

RUN apk del build-deps
票数 35
EN

Stack Overflow用户

发布于 2021-06-30 07:20:39

主要是您需要安装mariadb-连接器-c软件包。但是只有这个包才会产生编译错误。因此,您还需要将gcc和musl包添加到Dockerfile中。这将使Django和MySQL在高寒图像中工作。

代码语言:javascript
复制
FROM python:3.8-alpine

RUN apk add gcc musl-dev mariadb-connector-c-dev
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56048631

复制
相关文章

相似问题

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