python - 无法在 Docker 容器中安装“mysql-connector-python”
问题描述
我在 Docker 容器中通过 pip 安装 mysql-connector-python 时遇到了一些问题。
我尝试了这么多,并在谷歌搜索了几乎一整天的帮助:O 希望 stackoverflow 社区现在可以帮助我
我的 Dockerfile
FROM python:3
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD [ "python", "./run.py" ]
要求.txt:
Flask==1.1.1
markdown==3.1.1
mysql-connector-python==8.0.17
在图像中,您可以看到我的不同文件所在的位置。当我现在尝试在init .py中导入 mysql 包时,import mysql.connector
我得到以下错误:
[...]/__init__.py", line 4, in <module>
import mysql.connector
ModuleNotFoundError: No module named 'mysql'
编辑:我的初始化.py:
import markdown
import os
import mysql.connector
from flask import Flask
from flask import request, jsonify
#Create an instance of Flask
app = Flask(__name__)
@app.route("/")
def index():
"""Present some API documentation"""
# Open the README file
with open(os.path.dirname(app.root_path) + '/README.md', 'r') as markdown_file:
#Read content
content = markdown_file.read()
#Convert to HTML
return markdown.markdown(content)
@app.route("/healthinsurances", methods=['GET','POST'])
def healthinsurances():
if (request.method == 'GET'):
cnx = connection.MySQLConnection(user='usr', password='pwd', host='host', database='db')
cnx.close()
return jsonify({'some': 'json'})
else:
some_json = request.get_json()
return jsonify({'you sent': some_json}), 201
我进一步列出了容器中列出的 pip 安装,它们是:
$ docker exec 7d5267a06dcc8c0f1d3a421c79f20c559fddf8ed65ada329e6f71ce69ddb0567 pip list
Package Version
------------ -------
Click 7.0
Flask 1.1.1
itsdangerous 1.1.0
Jinja2 2.10.3
Markdown 3.1.1
MarkupSafe 1.1.1
pip 19.2.3
setuptools 41.2.0
Werkzeug 0.16.0
wheel 0.33.6
所以我的问题是,我看到该软件包显然没有安装。但我不知道为什么??!
愿你能帮帮我。提前谢谢了。
解决方案
我认为您需要发布您的 __init__ 并运行代码。我设置了与您相同的 docker 并运行它,-it
并且能够毫无问题地导入 mysql.connector。注意到我们的点子列表中存在差异。
Dockerfile:
FROM python:3
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD [ "/bin/bash" ]
请求.txt:
Flask==1.1.1
markdown==3.1.1
mysql-connector-python==8.0.17
重击输出:
zhiyong@----:~/projects/stack_overflow$ docker run -it stackoverflow
root@fd9bad5fc107:/usr/src/app# ls
Dockerfile requirements.txt run.py
root@fd9bad5fc107:/usr/src/app# python
Python 3.7.4 (default, Sep 12 2019, 15:40:15)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import mysql.connector
root@fd9bad5fc107:/usr/src/app# pip list
Package Version
---------------------- -------
Click 7.0
Flask 1.1.1
itsdangerous 1.1.0
Jinja2 2.10.3
Markdown 3.1.1
MarkupSafe 1.1.1
mysql-connector-python 8.0.17
pip 19.2.3
protobuf 3.10.0
setuptools 41.2.0
six 1.12.0
Werkzeug 0.16.0
wheel 0.33.6
推荐阅读
- java - Anagram制作程序的JUnit测试?
- python - 如何让列表框打印包含项目名称和价格的字典 - Python
- selenium - 使用 Selenium + Chrome 驱动程序 + Browsermob 代理登录仅在我添加另一个代理时才有效 -> 为什么?
- javascript - 使用 Bootstrap 轮播错误消息获取无法读取未定义的属性“offsetWidth”
- c# - 如何使用 C# 模式匹配与元组
- c++ - 带有 Clang 10 的显式模板实例化的 ~queue 的未定义引用
- android - kotlin 中的运行时异常
- algorithm - 通过大师定理和迭代方法的递归关系 - 不同的对数底
- amazon-s3 - s3cmd 将文件从 tar 标准输入:[Errno 32] 损坏的管道
- r - R 声称 doParallel 所依赖的包不可用,即使它们已安装并且可以加载