Python/Docker ImportError: Не удалось импортировать Django, но он установлен
Я пытаюсь запустить программу микросервисов через файл manager.py, который использует docker, но когда я запускаю программу с помощью docker-compose up, я получаю ImportError, который говорит мне, что Django не установлен, хотя он установлен. Я пытался использовать библиотеку venv для создания и установки Django с помощью моей виртуальной среды vegatestnet, я также пытался изменить переменную пути Windows, чтобы указать на проект, и, наконец, я пытался даже использовать import sys print(sys.path), чтобы найти, где находится мой PYTHON_PATH, но безрезультатно.
Я также пытался использовать эти ссылки, чтобы помочь мне: ImportError: Не удалось импортировать Django. Вы уверены, что он установлен и доступен в вашей переменной окружения PYTHONPATH? , ModuleNotFoundError: No module named 'django' while running server in virtual environment, and Couldn't import Django. Вы уверены, что он установлен и доступен в вашей переменной окружения PYTHONPATH? --> WSGI.PY файл и я попробовал их решения, но я все еще получаю эту ошибку.
Вот структура каталогов, с которой я работаю:
-veganettest
...
-posts (folder)
-profiles (folder)
...
producer.py (my producer file)
-static_cdn (folder)
-static_project (folder)
...
-veganettest (folder)
-vegatestnet (virtual envoirment folder)
admin (my admin file)
consumer.py (my consumer file)
db.sqlite3 (database file)
docker-compose.yml (docker compose file)
Dockerfile (just the dockerfile)
manage.py (manager file - file where I am getting the error)
requirements.txt (import file)
Вот ошибка, которую я получаю, когда запускаю программу:
7e1fb27ba719_veganettest_backend_1 | ['C:\\app', 'C:\\Python\\python39.zip', 'C:\\Python\\DLLs', 'C:\\Python\\lib', 'C:\\Python', 'C:\\Python\\lib\\site-packages']
7e1fb27ba719_veganettest_backend_1 | Traceback (most recent call last):
7e1fb27ba719_veganettest_backend_1 | File "C:\app\manage.py", line 11, in main
7e1fb27ba719_veganettest_backend_1 | from django.core.management import execute_from_command_line
7e1fb27ba719_veganettest_backend_1 | ModuleNotFoundError: No module named 'django'
7e1fb27ba719_veganettest_backend_1 |
7e1fb27ba719_veganettest_backend_1 | The above exception was the direct cause of the following exception:
7e1fb27ba719_veganettest_backend_1 |
7e1fb27ba719_veganettest_backend_1 | Traceback (most recent call last):
7e1fb27ba719_veganettest_backend_1 | File "C:\app\manage.py", line 22, in <module>
7e1fb27ba719_veganettest_backend_1 | main()
7e1fb27ba719_veganettest_backend_1 | File "C:\app\manage.py", line 13, in main
7e1fb27ba719_veganettest_backend_1 | raise ImportError(
7e1fb27ba719_veganettest_backend_1 | ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
veganettest_queue_1 exited with code 1
7e1fb27ba719_veganettest_backend_1 exited with code 1
Вот мои файлы manage.py, Dockerfile, docker-compose.yml и requirements.txt соответственно:
файлmanage.py:
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
print(sys.path)
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'veganettest.settings')
try:
from django.core.management import execute_from_command_line #line where I am receiving the error
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()
Dockerfile:
FROM python:3.9.6
ENV PYTHONUNBUFFERED 1
WORKDIR /app
COPY requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
COPY . /app
файл docker-compose.yml:
version: '3.8'
services:
backend:
build:
context: .
dockerfile: Dockerfile
command: 'python manage.py runserver 0.0.0.0:8000'
ports:
- 8000:8000
volumes:
- C:/Users/trevo/OneDrive/Desktop/veganet/veganettest:c:/app
depends_on:
- db
queue:
build:
context: .
dockerfile: Dockerfile
command: 'python -u consumer.py'
depends_on:
- db
db:
image: mysql:5.7.22
restart: always
environment:
MYSQL_DATABASE: vegatest
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
volumes:
- .dbdata:/var/lib/mysql
ports:
- 33066:3306
requirements.txt:
Django==4.0.2
djangorestframework==3.12.2
mysqlclient==2.0.1
django-mysql==3.9
django-cors-headers==3.5.0
pika==1.1.0
Что я делаю неправильно? Как я могу это исправить? Спасибо.