Уведомления

Группа в Telegram: @pythonsu

#1 Июль 13, 2015 13:10:26

MiK
Зарегистрирован: 2014-10-30
Сообщения: 191
Репутация: +  -1  -
Профиль   Отправить e-mail  

импортирование по относительному пути

Не могу разобраться как работает.
есть каталог:

каталог
    __init__.py
   файл1.py
   файл2.py

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

ПС: питон3

Отредактировано MiK (Июль 13, 2015 13:12:14)

Офлайн

#2 Июль 13, 2015 14:15:05

WoMax
Зарегистрирован: 2014-05-26
Сообщения: 124
Репутация: +  9  -
Профиль   Отправить e-mail  

импортирование по относительному пути

Офлайн

#3 Июль 13, 2015 14:30:05

MiK
Зарегистрирован: 2014-10-30
Сообщения: 191
Репутация: +  -1  -
Профиль   Отправить e-mail  

импортирование по относительному пути

Я это тоже видел, но ничего не понял.

Поидее, он должен искать относительно файла который я запустил лично. Но он говорит, что главный модуль не загружен, что-ли… Как ни пробую, всё та же самая ошибка.

Отредактировано MiK (Июль 13, 2015 14:33:24)

Офлайн

#4 Июль 13, 2015 15:05:38

MiK
Зарегистрирован: 2014-10-30
Сообщения: 191
Репутация: +  -1  -
Профиль   Отправить e-mail  

импортирование по относительному пути

Вот из книги Лутца:

Инструкция from . import A, например, ограничится поиском модуля в ката-
логе, содержащем файл, где находится эта инструкция.

То есть всё должно работать верно. Или я чего-то не понимаю?

Офлайн

#5 Июль 13, 2015 16:41:31

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

импортирование по относительному пути

import file_2

Офлайн

#6 Июль 13, 2015 17:26:44

MiK
Зарегистрирован: 2014-10-30
Сообщения: 191
Репутация: +  -1  -
Профиль   Отправить e-mail  

импортирование по относительному пути

4kpt_III
Ну это-же по абсолютному…
Нужет тот синтаксис, что в шапке.

Офлайн

#7 Июль 13, 2015 17:41:03

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

импортирование по относительному пути

MiK
Нужет тот синтаксис, что в шапке.
Вам нужно импортировать или синтаксис?

Или ехать, или ?

Отредактировано 4kpt_III (Июль 13, 2015 17:41:25)

Офлайн

#8 Июль 13, 2015 17:52:33

MiK
Зарегистрирован: 2014-10-30
Сообщения: 191
Репутация: +  -1  -
Профиль   Отправить e-mail  

импортирование по относительному пути

4kpt_III
Надо импортировать тем синтаксисом, просто чтобы разобраться в механизме. Заглянул, в пятое издание Лутца, но там вроде те же самые примеры. Ничего не могу понять. Может баг какой?

Офлайн

#9 Июль 13, 2015 18:49:40

WoMax
Зарегистрирован: 2014-05-26
Сообщения: 124
Репутация: +  9  -
Профиль   Отправить e-mail  

импортирование по относительному пути

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, то не будет работать.

Отредактировано WoMax (Июль 13, 2015 18:50:10)

Офлайн

#10 Июль 13, 2015 19:23:43

MiK
Зарегистрирован: 2014-10-30
Сообщения: 191
Репутация: +  -1  -
Профиль   Отправить e-mail  

импортирование по относительному пути

Да, всё получилось, из шела, спасибо. Хотя вроде пробовал не из мэйна, а через другой файл, та же ошибка была. Наверно где-то не разобрался ещё.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version