使用 docker-compose 在 docker 中运行任何 manage.py 命令时,没有名为 django 的模块错误

Igo*_*elo 8 python django docker docker-compose

ImportError: No module named django在尝试启动正在运行的容器时遇到了docker-compose up

这是我的场景:

文件

FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

version: '2'
services:
  db:
    image: postgres
  web:
    build: .
    command: bash -c "python manage.py runserver"
    volumes:
      - .:/code
    expose:
      - "8000"
    links:
      - db:db
Run Code Online (Sandbox Code Playgroud)

管理文件

import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")

    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)
Run Code Online (Sandbox Code Playgroud)
  • 容器构建成功
  • 我的包存在于容器中(我在运行时得到它们pip freeze

我已经更改了 manage.py 内容

import django
print django.get_version()
Run Code Online (Sandbox Code Playgroud)

它奏效了。

除了开始一个新项目之外,这与本教程中的示例基本相同。

Ele*_*nic 0

我的解决方案是简单地调用

python3.6 manage.py ...
Run Code Online (Sandbox Code Playgroud)

代替

python manage.py ...
Run Code Online (Sandbox Code Playgroud)