Импорт кода отлично работает на локальном компьютере, но выдает ошибку на aws

#python #python-3.x #django

#python #python-3.x #django

Вопрос:

models.py

 from django.conf import settings
from django.db import models

from subject.models import Subject
from core.utils import generate_file_name


def file_upload_path(instance, filename):
    # File will be uploaded to MEDIA_ROOT / user_<id>/<filename>
    name = instance.slug   ".zip"
    file_path = generate_file_name()
    return 'project_{0}/{1}/{2}'.format(file_path, instance.slug, name)


def image_upload_path(instance, filename):
    # File will be uploaded to MEDIA_ROOT / user_<id>/<filename>
    if instance.project_image1 == filename:
        filename = "image_1.png"
    elif instance.project_image2 == filename:
        filename = "image_2.png"
    elif instance.project_image3 == filename:
        filename = "image_3.png"
    return 'project_{0}/{1}'.format(instance.slug, filename)


class Project(models.Model):
    """This is model for project"""

    project_name = models.CharField(max_length=50,)
    description = models.TextField()
    slug = models.SlugField()
    technologies = models.TextField()
    owner = models.ForeignKey(settings.AUTH_USER_MODEL,
                              on_delete=models.CASCADE)
    price = models.DecimalField(max_digits=99, decimal_places=2)
    subject = models.ManyToManyField(
        Subject, related_name="projects")
    created = models.DateField(auto_now_add=True)
    project_image1 = models.ImageField(upload_to=image_upload_path)
    project_image2 = models.ImageField(
        blank=True, null=True, upload_to=image_upload_path)
    project_image3 = models.ImageField(
        blank=True, null=True, upload_to=image_upload_path)
    project_zip = models.FileField(upload_to=file_upload_path)

    def search_by_id(self, id):
        return self.objects.get(id=id)

    def search_by_slug(self, slug):
        return self.objects.get(slug=slug)
  

views.py

 from rest_framework import viewsets, generics
from rest_framework.parsers import FormParser, MultiPartParser, FileUploadParser

from .models import Project
from .serializers import ProjectSerializer, ProjectListSerializer
from .permissions import IsOwnerOrReadOnly


class ProjectCreateView(generics.CreateAPIView):
    parser_classes = (MultiPartParser, FormParser,)
    serializer_class = ProjectSerializer
    permission_classes = [IsOwnerOrReadOnly, ]

    def perform_create(self, serializer):
        serializer.save(owner=self.request.user)


class ProjectListView(generics.ListAPIView):
    parser_classes = (FileUploadParser,)
    serializer_class = ProjectListSerializer
    queryset = Project.objects.all()


class ProjectRetrieveView(generics.RetrieveAPIView):
    parser_classes = (FileUploadParser,)
    serializer_class = ProjectListSerializer
    queryset = Project.objects.all()
    lookup_field = "slug"
  

На локальном компьютере форма строки .models import Project работает нормально
Но когда я развертываю на aws, это выдает ошибку.

 Request Method: GET
Request URL:    http://www.compute.amazonaws.com/api/user/login
Django Version: 3.1.1
Exception Type: ImportError
Exception Value:    
cannot import name 'Project' from 'project.models' (/home/ubuntu/project/vtu-project-backend-django/api/project/models.py)
Exception Location: /home/ubuntu/project/vtu-project-backend-django/api/project/views.py, line 4, in <module>
Python Executable:  /home/ubuntu/.local/share/virtualenvs/vtu-project-backend-django-_DtFEd4z/bin/python
Python Version: 3.8.5
Python Path:    
['/home/ubuntu/project/vtu-project-backend-django/api',
 '/home/ubuntu/.local/share/virtualenvs/vtu-project-backend-django-_DtFEd4z/bin',
 '/usr/lib/python38.zip',
 '/usr/lib/python3.8',
 '/usr/lib/python3.8/lib-dynload',
 '/home/ubuntu/.local/share/virtualenvs/vtu-project-backend-django-_DtFEd4z/lib/python3.8/site-packages']
Server time:    Mon, 07 Sep 2020 13:00:24  0000
  

На локальном компьютере он работает нормально, но при развертывании в Amazon web services выдает эту ошибку, и я не могу устранить эту ошибку. Пожалуйста, помогите
Что не так с stack overflow он продолжает говорить, что ваш вопрос в основном заключается в добавлении дополнительных деталей в код.

Комментарии:

1. Какую команду вы используете для запуска программы Python в aws? Поскольку это относительный импорт, вам придется указать имя модуля при запуске программы.

2. Вероятно, вы перепутали какой-то базовый путь в своем settings.py . Убедитесь, что пути здесь указаны правильно. Возможно, опубликуйте соответствующую часть вашего файла настроек.