2017-01-08 14 views
0

Я пытаюсь построить контейнер-докер с флягой и gevent, и он не работает, как я надеялся. Я могу взломать его вместе, но почему не работает установка pip? Полная информация ниже.Почему «pip install» не работает с Flask и gevent внутри контейнера дойкера debian?

Dockerfile:

FROM debian:jessie 

сборки контейнера:

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

Run Контейнер:

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" 

Ошибка:

[email protected]:/# 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 

тест снова. Ошибка:

[email protected]:/# 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 

Теперь это работает.

[email protected]:/# python -c "from flask import Flask" 
[email protected]:/# 

EDIT: Я могу создать новый virtualenv на моем Macbook, pip install Flask gevent и она отлично работает. Python версии 2.7.9-2 + deb8u1 в докере, Python 2.7.10 на моем macbook. Может ли это так?

EDIT 2: Выполненные выше команды фактически работают. То, что я действительно сделал (что было нарушено) было:

в контейнере:

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

Так, не пип установить их без питона-DEV!

ответ

1

Попробуйте сделать pip install с флагом --process-dependency-links.

Вы также можете попробовать флаг --force-reinstall, если у докерного изображения есть старая версия Flask.

+0

Спасибо за ваш ответ. Я попробовал 'pip install -process-dependency-links Flask gevent' и' pip install -process-dependency-links -force-reinstall Flask gevent', и у меня возникают те же проблемы. :( – dfrankow

+0

Я нашел свою проблему. Я все время запускал установку pupon перед установкой python-dev, а затем устанавливал python-dev. Я не думал, что это имеет значение, но это так. Я скоро удалю этот вопрос. – dfrankow

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!