没有名为rest_framework的模块。 Django + Docker

时间:2017-02-25 16:06:29

标签: python django docker virtualenv

我已经使用pj在django docker容器中的virtualenv中使用djangorestframeworkmarkdown安装了django filter,通过pip freeze进行了检查。 OS X中的绝对路径为/Users/user/project/denv/lib/python2.7/site-packages。在settings.py中添加了'rest_framework',,但在docker-compose up之后仍然出现以下错误。我想这与错误的路径有关,但不知道如何解决这个问题。

Traceback (most recent call last):
web_1  |   File "/usr/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper
web_1  |     fn(*args, **kwargs)
web_1  |   File "/usr/local/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 113, in inner_run
web_1  |     autoreload.raise_last_exception()
web_1  |   File "/usr/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 249, in raise_last_exception
web_1  |     six.reraise(*_exception)
web_1  |   File "/usr/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper
web_1  |     fn(*args, **kwargs)
web_1  |   File "/usr/local/lib/python2.7/site-packages/django/__init__.py", line 27, in setup
web_1  |     apps.populate(settings.INSTALLED_APPS)
web_1  |   File "/usr/local/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate
web_1  |     app_config = AppConfig.create(entry)
web_1  |   File "/usr/local/lib/python2.7/site-packages/django/apps/config.py", line 90, in create
web_1  |     module = import_module(entry)
web_1  |   File "/usr/local/lib/python2.7/importlib/__init__.py", line 37, in import_module
web_1  |     __import__(name)
web_1  | ImportError: No module named rest_framework

编辑:终端截图 enter image description here

EDIT2:docker-compose.yml

 version: '2'
 services:
   db:
     image: postgres
   web:
     build: .
     command: python manage.py runserver 0.0.0.0:8000
     volumes:
       - .:/code
     ports:
       - "8000:8000"
     depends_on:
       - db

EDIT2:我认为这个错误是因为应用程序实际上使用的是docker&#python而不是virtualenv python。

有可能吗?如何将djangorestframework安装到docker的python包或者更好地让django应用程序使用自己的python?

2 个答案:

答案 0 :(得分:5)

您不需要手动进行pip安装。 dockerfile中的以下行将安装需求。

RUN pip install -r requirements.txt

您只需要将djangorestframework添加到您的requirements.txt

# previous stuff Django etc...
djangorestframework

并运行

docker-compose up --build

答案 1 :(得分:0)

您能告诉我们您的Dockerfile吗?

它应该看起来像这样:

FROM python:2.7
ENV PYTHONUNBUFFERED 1
WORKDIR /code
ADD . /code/
RUN pip install -r requirements.txt
  

实际上是使用docker的python

是的,使用FROM python:2.7构建Docker-Image将安装新的Python环境。

  

不是virtualenv python。

是的,除非您将virtualenv复制到Docker-Image中并在那里激活它(您应该这样做)。

  

已激活。当我安装这些东西时它被激活了

除非您在pip freeze > requirements.txtRUN pip install -r requirements.txt并使用Dockerfile才有关系,否则这将在Python环境中的virtualenv内安装所有Python依赖项在您的Docker-Image中。