Как я могу импортировать файл в Django из папки без ошибок
Может ли кто-нибудь помочь мне с моей проблемой? У меня следующая структура проекта:
check_project
--- check_app
--- check_project
--- modules
--- __init__.py
--- tools.py
--- robots.py
Мне нужно импортировать мой файл tools.py внутрь robots.py И вот в чем проблема. Если я импортирую его таким образом
from tools import *
Я могу запустить файл внутри Visual Studio Code, и он работает. Но когда я запускаю Django, он выдает Error: "ModuleNotFoundError: No module named 'tools'"
А если я импортирую его таким образом
from modules.tools import *
Django работает нормально. Но когда я запускаю файл внутри Visual Studio Code, он выдает Error: "ModuleNotFoundError: No module named 'modules'"
from tools import *
Это работает в Django. Но в Visual Studio у меня возникает Ошибка: "ImportError: attempted relative import with no known parent package"
from check_project.modules.robots import *
Это работает в Django. Но в Visual Studio у меня возникает Ошибка: "ModuleNotFoundError: Нет модуля с именем 'check_project'"
Как я могу решить эту проблему, чтобы она работала как в Django, так и в Visual Studio?
Спасибо за помощь )
Это будет работать:
from .tools import *
Эта проблема почти всегда возникает из-за использования плоской файловой структуры проекта, и вы пытаетесь разделить функциональность на два файла.
1. Первый метод
Самый простой способ решить эту проблему - импортировать файл перед вызовом его элементов. Сначала сделайте следующее:
import tools
А затем, если у вас есть, например, функция под названием "myfunction()" в вашем файле tools.py, то вы можете использовать эту функцию следующим образом:
var = tools.myfunction()
2. Второй метод
Если вы создаете отдельный файл для выполнения полезных действий, почему бы не сделать его настоящим пакетом? На самом деле это гораздо проще, чем вы думаете.
Измените структуру файлов так, чтобы функциональность, которую вы хотите разделить, находилась в отдельной папке и включала пустой файл init.py. Что-то вроде этого:
check_project
--- check_app
--- check_project
--- modules
--- __init__.py
--- robots.py
--- tools
--- __init__.py
--- tools.py
Затем вы можете использовать предыдущий синтаксис:
from tools import *
Надеюсь, это поможет.