Невозможно установить 'mysql-connector-python' в контейнере Docker - PullRequest
0 голосов
/ 12 октября 2019

Я столкнулся с некоторыми проблемами при установке mysql-connector-python через pip в контейнере Docker.

Я пытался так много раз и искал в google какую-то помощь почти весь день: 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" ]

require.txt:

Flask==1.1.1
markdown==3.1.1
mysql-connector-python==8.0.17

project structure

На картинке вы можете увидеть, где находятся мои разные файлы. Как только я сейчас пытаюсь импортировать пакет mysql в init .py с import mysql.connector, я получаю следующую ошибку:

[...]/__init__.py", line 4, in <module>
import mysql.connector
ModuleNotFoundError: No module named 'mysql'

EDIT: my init .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 

Итак, моя проблема в том, что я вижу, что пакет явно не установлен,Но я понятия не имею, почему ??!

Можете ли вы помочь мне. Большое спасибо заранее.

1 Ответ

0 голосов
/ 12 октября 2019

Я думаю, вам нужно опубликовать свой __init__ и запустить код. Я установил тот же докер, что и вы, и запустил его с -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" ]

Req.txt:

Flask==1.1.1
markdown==3.1.1
mysql-connector-python==8.0.17

Вывод Bash:

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 
...