ImportError: attempted relative import with no known parent package python
У меня вот такая структура проекта ---package1/code.py ---package2/ext.py
Как мне импортировать переменную из ext.py в code.py ?
from ext import var - не срабатывает, говорит что не существует модуля ext
from ..package2.ext import var - тоже не срабатывает выдаётся ошибка: ImportError: attempted relative import with no known parent package
Ответы (3 шт):
- в пакетах package1 и package2 должен быть пустой файл
__init__.py(если его нет) - такая структура будет:
ваш_проект/
package1/
__init__.py
code.py
package2/
__init__.py
ext.py
- я тестировал на таких файлах:
code.py
var = "code.py"
ext.py
from package1.code import var
print(var) # выводит code.py
P.S. Надеюсь чем-то помогло
Python просматривает список каталогов определенный в sys.path.
Ошибка: ImportError: attempted relative import with no known parent package говорит о том что модуль не был найден в sys.path (вывод ее на печать поможет прояснить ситуацию).
При такой структуре желательно использовать main.py для запуска и импорта дочерних модулей:
project_folder/
main.py
package1/
__init__.py
code.py
package2/
__init__.py
ext.py
Если вам нужно запустить code.py и при этом импортировать данные из ext.py, то нужно:
- запустить
code.pyкак модульpython -m package1.code - или добавить
sys.path.append(os.getcwd())в самое началоcode.py
Всё работает.
В файлах указывать
importиfromбез ведущих точек:from package2.ext import varа не
from ..package2.ext import varВызывать нужно из папки ваш_проект вот такую команду:
python -m package1.code
Можно путь к python указать полностью, типа usr/bin/python.
Важно указать -m и точку . между package1 и code, а не /, и после code не писать .py.
Вот так:
путь_к_вашему_проекту> python -m package1.code