Найти - Пользователи
Полная версия: импортирование по относительному пути
Начало » Python для новичков » импортирование по относительному пути
1 2
MiK
Не могу разобраться как работает.
есть каталог:
каталог
    __init__.py
   файл1.py
   файл2.py

файл1:
from . import файл2
   
имя_файла = "это файл1"
def напечатать_имя_файла():
    print(имя_файла)
Получаю ошибку: “SystemError: Parent module '' not loaded, cannot perform relative import”

ПС: питон3
MiK
Я это тоже видел, но ничего не понял.

Поидее, он должен искать относительно файла который я запустил лично. Но он говорит, что главный модуль не загружен, что-ли… Как ни пробую, всё та же самая ошибка.
MiK
Вот из книги Лутца:
Инструкция from . import A, например, ограничится поиском модуля в ката-
логе, содержащем файл, где находится эта инструкция.

То есть всё должно работать верно. Или я чего-то не понимаю?
4kpt_III
import file_2
MiK
4kpt_III
Ну это-же по абсолютному…
Нужет тот синтаксис, что в шапке.
4kpt_III
MiK
Нужет тот синтаксис, что в шапке.
Вам нужно импортировать или синтаксис?

Или ехать, или ?
MiK
4kpt_III
Надо импортировать тем синтаксисом, просто чтобы разобраться в механизме. Заглянул, в пятое издание Лутца, но там вроде те же самые примеры. Ничего не могу понять. Может баг какой?
WoMax
https://docs.python.org/3/tutorial/modules.html#intra-package-references

Note that relative imports are based on the name of the current module. Since the name of the main module is always “__main__”, modules intended for use as the main module of a Python application must always use absolute imports.

Если будешь запускать файл как main, то не будет работать.
MiK
Да, всё получилось, из шела, спасибо. Хотя вроде пробовал не из мэйна, а через другой файл, та же ошибка была. Наверно где-то не разобрался ещё.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB