Не могу установить ни одного pip-пакета в моей среде докера, так как он не будет распознан - PullRequest
0 голосов
/ 02 мая 2019

Я запускаю проект Cookiecutter django в среде докеров, и я хотел бы добавить новые пакеты через pip. В частности, я хочу добавить: djangorestframework-jwt

Когда я делаю: docker-compose -f local.yml run --rm django pip install кажется, что это было бы прекрасно работать, потому что я получаю: Successfully installed PyJWT-1.7.1 djangorestframework-jwt-1.11.0

Теперь проблема в том, что он не устанавливает его. Он не появляется, когда я запускаю pip freeze, а также не в pip list

Затем я попытался поместить его в свой файл require.txt и запустить с помощью: docker-compose -f local.yml run --rm django pip install -r requirements/base.txt

Тот же результат. Он говорит, что он успешно установлен, но это не так. Я подумал, что это может быть проблема с моей версией django и пакетом, но то же самое происходит, когда я пытаюсь обновить свой pip. Он говорит, что он обновлен, но когда я запускаю pip install -upgrade pip, я снова получаю: You should consider upgrading via the 'pip install --upgrade pip' command.

У меня заканчиваются варианты.

Мои требования:

-r ./base.txt

Werkzeug==0.14.1  # https://github.com/pallets/werkzeug
ipdb==0.11  # https://github.com/gotcha/ipdb
Sphinx==1.7.5  # https://github.com/sphinx-doc/sphinx
psycopg2==2.7.4 --no-binary psycopg2  # https://github.com/psycopg/psycopg2

# Testing
# ------------------------------------------------------------------------------
pytest==3.6.3  # https://github.com/pytest-dev/pytest
pytest-sugar==0.9.1  # https://github.com/Frozenball/pytest-sugar

# Code quality
# ------------------------------------------------------------------------------
flake8==3.5.0  # https://github.com/PyCQA/flake8
coverage==4.5.1  # https://github.com/nedbat/coveragepy

# Django
# ------------------------------------------------------------------------------
factory-boy==2.11.1  # https://github.com/FactoryBoy/factory_boy

django-debug-toolbar==1.9.1  # https://github.com/jazzband/django-debug-toolbar
django-extensions==2.0.7  # https://github.com/django-extensions/django-extensions
django-coverage-plugin==1.5.0  # https://github.com/nedbat/django_coverage_plugin
pytest-django==3.3.2  # https://github.com/pytest-dev/pytest-django
djangorestframework-jwt==1.11.0 # https://github.com/GetBlimp/django-rest-framework-jwt

Вывод списка пунктов:

Package                  Version 
------------------------ --------
alabaster                0.7.12  
argon2-cffi              18.1.0  
atomicwrites             1.3.0   
attrs                    19.1.0  
Babel                    2.6.0   
backcall                 0.1.0   
certifi                  2019.3.9
cffi                     1.12.2  
chardet                  3.0.4   
coreapi                  2.3.3   
coreschema               0.0.4   
coverage                 4.5.1   
decorator                4.4.0   
defusedxml               0.5.0   
Django                   2.0.7   
django-allauth           0.36.0  
django-coverage-plugin   1.5.0   
django-crispy-forms      1.7.2   
django-debug-toolbar     1.9.1   
django-environ           0.4.5   
django-extensions        2.0.7   
django-model-utils       3.1.2   
django-redis             4.9.0   
django-widget-tweaks     1.4.3   
djangorestframework      3.8.2   
docutils                 0.14    
factory-boy              2.11.1  
Faker                    1.0.4   
flake8                   3.5.0   
idna                     2.8     
imagesize                1.1.0   
ipdb                     0.11    
ipython                  7.4.0   
ipython-genutils         0.2.0   
itypes                   1.1.0   
jedi                     0.13.3  
Jinja2                   2.10    
MarkupSafe               1.1.1   
mccabe                   0.6.1   
more-itertools           6.0.0   
oauthlib                 3.0.1   
packaging                19.0    
parso                    0.3.4   
pexpect                  4.6.0   
pickleshare              0.7.5   
Pillow                   5.2.0   
pip                      19.0.3  
pluggy                   0.6.0   
prompt-toolkit           2.0.9   
psycopg2                 2.7.4   
ptyprocess               0.6.0   
py                       1.8.0   
pycodestyle              2.3.1   
pycparser                2.19    
pyflakes                 1.6.0   
Pygments                 2.3.1   
pyparsing                2.3.1   
pytest                   3.6.3   
pytest-django            3.3.2   
pytest-sugar             0.9.1   
python-dateutil          2.8.0   
python-slugify           1.2.5   
python3-openid           3.1.0   
pytz                     2018.5  
redis                    3.2.1   
requests                 2.21.0  
requests-oauthlib        1.2.0   
setuptools               40.8.0  
six                      1.12.0  
snowballstemmer          1.2.1   
Sphinx                   1.7.5   
sphinxcontrib-websupport 1.1.0   
sqlparse                 0.3.0   
termcolor                1.1.0   
text-unidecode           1.2     
traitlets                4.3.2   
Unidecode                1.0.23  
uritemplate              3.0.0   
urllib3                  1.24.1  
wcwidth                  0.1.7   
Werkzeug                 0.14.1  
wheel                    0.33.1  

Любая помощь высоко ценится! Спасибо ...

1 Ответ

1 голос
/ 02 мая 2019

docker-compose run запускает новый контейнер и выполняет в нем команду.При использовании с флагом --rm контейнер удаляется после завершения команды.

Что происходит, если вы создаете новый контейнер и устанавливаете пакеты или обновляете pip внутри этого контейнера.После завершения команды контейнер удаляется.

Если позже вы запустите что-то вроде docker-compose -f local.yml run --rm pip list, будет создан совершенно новый контейнер, и в нем будет выполнен список пипсов, в котором не будет отображаться никаких пакетов предыдущего запуска, поскольку они были установлены в другом контейнере, который уже удален.

Лучшим способом было бы создать Docker image, включающий ваше приложение, и установить pip-пакеты во время сборки Docker.Вы можете проверить образец в этом вопросе

Таким образом, каждый раз, когда вы запускаете контейнер с вашего изображения, в нем будут все пакеты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...