django - 下载 mysqlclient 时 Docker-compose 出错
问题描述
构建 docker-compose.yml 时出现此错误。我有一个 django 项目,当我尝试安装它的依赖项时,出现以下错误:
ERROR: Command errored out with exit status 1:
command: /usr/local/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-_okt_256/mysqlclient/setup.py'"'"'; __file__='"'"'/tmp/pip-install-_okt_256/mysqlclient/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-9yseytwi
cwd: /tmp/pip-install-_okt_256/mysqlclient/
Complete output (12 lines):
/bin/sh: 1: mysql_config: not found
/bin/sh: 1: mariadb_config: not found
/bin/sh: 1: mysql_config: not found
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-_okt_256/mysqlclient/setup.py", line 15, in <module>
metadata, options = get_config()
File "/tmp/pip-install-_okt_256/mysqlclient/setup_posix.py", line 65, in get_config
libs = mysql_config("libs")
File "/tmp/pip-install-_okt_256/mysqlclient/setup_posix.py", line 31, in mysql_config
raise OSError("{} not found".format(_mysql_config_path))
OSError: mysql_config not found
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
下面是我的requirements.txt
asgiref==3.2.10
astroid==2.4.2
certifi==2020.6.20
chardet==3.0.4
colorama==0.4.3
defusedxml==0.6.0
Django==3.0.8
django-common-helpers==0.9.2
django-cron==0.5.1
django-templated-mail==1.1.1
djangorestframework==3.11.0
idna==2.10
install==1.3.3
isort==4.3.21
lazy-object-proxy==1.4.3
mccabe==0.6.1
mysqlclient==2.0.1
oauthlib==3.1.0
pylint==2.5.3
pylint-plugin-utils==0.6
python3-openid==3.2.0
pytz==2020.1
requests==2.24.0
requests-oauthlib==1.3.0
six==1.15.0
sqlparse==0.3.1
toml==0.10.1
urllib3==1.25.9
wrapt==1.12.1
下载mysqlclient时弹出错误。
有人帮忙
docker-compose.yml 看起来像这样
version: '3.7'
services:
db:
image: mysql:5.6
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: 'djangodatabase'
MYSQL_USER: 'admin'
MYSQL_PASSWORD: '12345'
MYSQL_ROOT_PASSWORD: '12345'
web:
build: .
command: python manage.py runserver 127.0.0.1:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
这是我的 Docker 文件:
FROM python:3.8-slim
ENV PYTHONBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
解决方案
FROM python:3.7-slim
RUN apt-get update
RUN apt-get install -y gcc
RUN apt-get install -y default-libmysqlclient-dev
ENV PYTHONBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
通过在我的 docker 文件中添加 default-libmysqlclient-dev 依赖项解决了这个问题。
推荐阅读
- c# - ASP.NET OAuth 微软单租户登录
- regression - 前向选择和后向消除
- java - 如何使用 LocalDate 作为 TreeTableView / TableView 的列
- java - 当从 Fat-JAR/Uber-JAR 运行代码时,异常 `java.lang.IllegalStateException: zip file closed`
- attributes - xQuery:关联 2 个属性并返回与所述属性相关的数据
- r - Fehler:不能对不存在的列进行子集化。x 列 `plot_id` 不存在
- html - 将背景图像转换为对象问题
- c - 了解返回数据类型 C
- python - 带有 matplotlib 绘图的高级 pandas value_counts()
- bixby - 授予设备位置访问权限