Невозможно импортировать модель из файла .models во вложенный подкаталог приложения
Вот дерево моего проекта:
(base) justinbenfit@MacBook-Pro-3 cds_website % tree
.
├── api
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-38.pyc
│ │ ├── admin.cpython-38.pyc
│ │ ├── apps.cpython-38.pyc
│ │ ├── models.cpython-38.pyc
│ │ ├── serializers.cpython-38.pyc
│ │ ├── urls.cpython-38.pyc
│ │ └── views.cpython-38.pyc
│ ├── admin.py
│ ├── apps.py
│ ├── main.py
│ ├── management
│ │ ├── __init__.py
│ │ ├── commands
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ └── private.cpython-39.pyc
│ │ │ ├── private.py
│ │ │ └── scrape.py
│ │ └── test.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── __init__.py
│ │ └── __pycache__
│ │ ├── 0001_initial.cpython-38.pyc
│ │ └── __init__.cpython-38.pyc
│ ├── models.py
│ ├── serializers.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── cds_website
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-38.pyc
│ │ ├── settings.cpython-38.pyc
│ │ ├── urls.cpython-38.pyc
│ │ └── wsgi.cpython-38.pyc
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
└── requirements.txt
api - это приложение в более крупном проекте под названием cds_website. Файл settings.py в каталоге проекта cds_website содержит следующие установленные приложения:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'api.apps.ApiConfig',
'rest_framework',
'environ'
]
и мой файл apps.py в приложении api содержит следующий класс:
from django.apps import AppConfig
class ApiConfig(AppConfig):
name = 'api'
CMC является моделью в моем файле models.py. Я пытаюсь импортировать ее в scrape.py. Я пробовал: from ...models import CMC from api.models import CMC from ... import CMC
первый выкидывает: ImportError: attempted relative import with no known parent package Второй бросает: ModuleNotFoundError: Нет модуля с именем 'api' третий выбрасывает: ImportError: attempted relative import with no known parent package
Вот ссылка на репозиторий кода: https://github.com/Justinbenfit23/cds_website
Все, что я прочитал, указывает на то, что по крайней мере один из них должен работать. Любое направление будет оценено по достоинству!
Я тестирую ваш проект с помощью from api.models import CMC и он работает
Самый простой способ - создать ecrape_manage.py в cds_website-master папку, содержимое ecrape_manage.py:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "cds_website.settings")
import django
django.setup()
exec(open("api/management/commands/scrape.py").read())
и просто запустите python ecrape_manage.py