[英]mysql_config not found when installing mysqldb python interface
[英]Error 'OSError: mysql_config not found' when installing python mysqlclient with pip in docker
这是docker-compose build
的完整 output
$ docker-compose build
db uses an image, skipping
Building module1
Step 1/6 : FROM python:3.8.5-alpine
---> 44fceb565b2a
Step 2/6 : WORKDIR /usr/src/module1
---> Using cache
---> c1804c812bc9
Step 3/6 : COPY ./requirements.txt /usr/src/module1/requirements.txt
---> Using cache
---> 993eed44a4a2
Step 4/6 : RUN pip install -r requirements.txt
---> Running in d9a8746b6746
Collecting click==7.1.2
Downloading click-7.1.2-py2.py3-none-any.whl (82 kB)
Collecting Flask==1.1.2
Downloading Flask-1.1.2-py2.py3-none-any.whl (94 kB)
Collecting Flask-Cors==3.0.8
Downloading Flask_Cors-3.0.8-py2.py3-none-any.whl (14 kB)
Collecting Flask-SQLAlchemy==2.4.4
Downloading Flask_SQLAlchemy-2.4.4-py2.py3-none-any.whl (17 kB)
Collecting itsdangerous==1.1.0
Downloading itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB)
Collecting Jinja2==2.11.2
Downloading Jinja2-2.11.2-py2.py3-none-any.whl (125 kB)
Collecting MarkupSafe==1.1.1
Downloading MarkupSafe-1.1.1.tar.gz (19 kB)
Collecting mysqlclient==2.0.1
Downloading mysqlclient-2.0.1.tar.gz (87 kB)
ERROR: Command errored out with exit status 1:
command: /usr/local/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-1bev77us/mysqlclient/setup.py'"'"'; __file__='"'"'/tmp/pip-install-1bev77us/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-ebifvu4a
cwd: /tmp/pip-install-1bev77us/mysqlclient/
Complete output (12 lines):
/bin/sh: mysql_config: not found
/bin/sh: mariadb_config: not found
/bin/sh: mysql_config: not found
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-1bev77us/mysqlclient/setup.py", line 15, in <module>
metadata, options = get_config()
File "/tmp/pip-install-1bev77us/mysqlclient/setup_posix.py", line 65, in get_config
libs = mysql_config("libs")
File "/tmp/pip-install-1bev77us/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.
ERROR: Service 'module1' failed to build: The command '/bin/sh -c pip install -r requirements.txt' returned a non-zero code: 1
我的Dockerfile
看起来像这样:
FROM python:3.8.5-alpine
WORKDIR /usr/src/module1
COPY ./requirements.txt /usr/src/module1/requirements.txt
RUN pip install -r requirements.txt
COPY . /usr/src/module1
CMD ["python", "app.py"]
我在 macOS 中使用mysql@5.7
。
我已经做了https://github.com/clips/pattern/issues/203 。
有人可以告诉我如何解决这个问题吗?
一些 python 软件包依赖于系统上安装的软件。
mysql 客户端就是其中之一。 因此,您需要在安装 python 软件包之前安装它。 当您使用 alpine 时,您可以通过添加RUN apk update && apk add mysql-client
来做到这一点:
FROM python:3.8.5-alpine
WORKDIR /usr/src/module1
COPY ./requirements.txt /usr/src/module1/requirements.txt
RUN apk update && apk add mysql-client
RUN pip install -r requirements.txt
COPY . /usr/src/module1
CMD ["python", "app.py"]
虽然正如其他人所说,安装mysql-client
可能会让你克服这个错误,但这只是你麻烦的开始。 接下来您会发现您需要编译 package,因此您需要安装编译器、开发库等。
The reason you will need to compile the package is that pre-compiled binary wheels on PyPI (which are indeed available for this package) don't work on Alpine Linux ( https://pythonspeed.com/articles/alpine-docker-python / )。
如果你从python:3.8.5-alpine
的基础镜像切换到python:3.8.5-slim-buster
,你很可能根本不需要安装任何系统包。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.