为什么“pip install”不能在debian docker容器中使用Flask和gevent?

时间:2017-01-08 22:01:07

标签: docker flask debian pip gevent

我正在尝试使用flask和gevent构建一个docker容器,但它并没有像我希望的那样工作。我可以一起破解它,但为什么不进行pip安装工作?详情如下。

Dockerfile:

FROM debian:jessie

构建容器:

docker build --pull --no-cache -t flask-test .

运行容器:

docker run -it flask-test /bin/bash

在容器内:

apt-get update
apt-get -y install python-pip
apt-get -y install python-dev
pip install Flask gevent

测试:

python -c "from flask import Flask"

错误:

root@2fe825b7f55e:/# python -c "from flask import Flask"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/flask/__init__.py", line 17, in <module>
    from werkzeug.exceptions import abort
ImportError: No module named werkzeug.exceptions

尝试修复(忘记点):

apt-get -y install python-flask

再次测试。错误:

root@2fe825b7f55e:/# python -c "from flask import Flask"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/flask/__init__.py", line 21, in <module>
    from .app import Flask, Request, Response
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 26, in <module>
    from . import json, cli
  File "/usr/local/lib/python2.7/dist-packages/flask/cli.py", line 17, in <module>
    import click
ImportError: No module named click

安装点击,这是什么。

pip install click

现在可行。

root@2fe825b7f55e:/# python -c "from flask import Flask"
root@2fe825b7f55e:/# 

编辑:我可以在我的macbook pip install Flask gevent上创建一个新的virtualenv,它运行正常。 Docker中的Python版本2.7.9-2 + deb8u1,我的macbook上的Python 2.7.10。可能是吗?

编辑2 :以上命令实际上有效。我真正做过的事(那被打破了)是:

容器内的

apt-get update
apt-get -y install python-pip
pip install Flask gevent
apt-get -y install python-dev
pip install Flask gevent

所以,不要在不使用python-dev 的情况下安装这些内容!

2 个答案:

答案 0 :(得分:1)

尝试使用pip install标记执行--process-dependency-links

你也可以试试--force-reinstall旗帜,因为这个码头图片有旧版本的Flask。

答案 1 :(得分:0)

以上命令实际上有效。我真正做过的事(那被打破了)是:

容器内的

apt-get update
apt-get -y install python-pip
pip install Flask gevent
apt-get -y install python-dev
pip install Flask gevent

我认为这没关系,并没有注意到,但确实很重要。

所以,不要在不使用python-dev 的情况下安装这些内容!