【问题标题】:Error "No module named MySQLdb" on dockerdocker 上的错误“没有名为 MySQLdb 的模块”
【发布时间】:2017-04-24 11:07:06
【问题描述】:

我正在尝试将我的 docker 应用程序容器连接到本地 mysql,但我收到“没有名为 MySQLdb 的模块”的错误。我的 config.py 文件是:

import os
BASEDIR = os.path.abspath(os.path.dirname(__file__))
SQLALCHEMY_MIGRATE_REPO = os.path.join(BASEDIR, 'db_repository')

SQLALCHEMY_DATABASE_URI = 'mysql+mysqldb://root:@192.168.0.29/test'
DEBUG = True

我的 docker 文件是:

FROM python:2.7-slim

WORKDIR /app

ADD . /app

RUN pip install -r requirements.txt

EXPOSE 9999

ENV NAME flaskCrudAPI

CMD ["python", "run.py"]

我的 requirements.txt 文件包含以下内容:

virtualenv
flask
mysql-server
flask_sqlalchemy
flask_migrate
sqlalchemy

我正在使用以下命令运行应用程序:

docker run -p 9999:9999 flaskcrud

但是我收到了关于找不到 mysqldb 模块的错误。我曾尝试将 python-mysql 和许多其他包添加到 requirements.txt 文件中,但这样一来,即使容器的构建在安装命令中也失败了。我究竟做错了什么?或者我该怎么办?

【问题讨论】:

  • 你能用命令行连接吗?喜欢mysql -h $ip -u root -p
  • 是的,我已经连接到那里
  • 你能分享docker build $image_namepip install命令从互联网安装包的详细日志吗?
  • 是的,pip install 从 Internet 安装软件包。如果需求中没有提到 mysql 客户端(例如“MySQL-python”),则构建不会引发错误。还是你想让我把这些包括在内,然后给你看日志?
  • 当构建成功并且我尝试使用我创建的 API 发布数据时,我得到了上面提到的错误。

标签: docker ssh containers dockerfile


【解决方案1】:

requirements.txt 文件的错误。我为文件中列出的所有依赖项使用了正确的版本,并且能够安装 mysql-python 而没有错误。

似乎正在发生的另一个问题是 python 版本。我正在使用 python 的精简版,它也恰好导致了这个问题。我将python:2.7-slim 更改为python:2.7,我能够解决这个问题。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 2017-01-27
    • 2014-11-12
    • 2019-05-22
    • 2017-04-22
    • 2013-02-25
    • 2012-09-28
    相关资源
    最近更新 更多