LINUX.ORG.RU

[python][недоумение]Импортировать все файлы модуля так и не?!


0

0

Что ж это делается, в третьем Питоне до сих пор при импорте модуля-директории его файлы автоматически не импортируются?! Например, у меня есть:

директория МойМодуль, в ней, по обычаю, файл __init__, и пачка файлов с классами.

Пишу import МойМодуль, а файлы-то не импортируются. Либо импортируй каждый отдельно (дичь), либо пиши функционал, который в Перле из коробки, между прочим.

Пока что написал свой велосипед, но не оставляю надежды, что все же я что-то пропустил. Пожалуйста, верните мне веру в человечество.

★★★

Re: [python][недоумение]Импортировать все файлы модуля так и не?!

Занятно, что import package.file и from package import * к тому же дают разные результаты. Воистину, Питон велик.

Gukl ★★★
() автор топика

Re: [python][недоумение]Импортировать все файлы модуля так и не?!

В ините напиши импорты из всех файлов класса. Что-то типа такого:

$ls mypack
__init__.py a.py b.py c.py

$cat mypack/__init__.py
from a import A1, A2
from b import B1, B2
from c import C1, C3

provaton ★★★★★
()

Re: [python][недоумение]Импортировать все файлы модуля так и не?!

Написать-то я написал (только универсальней, я сделал импорт всего из всех модулей в директории, так как мне нужно, чтобы он тупо импортировал все что найдет, а не конкретно указанные классы). Еще класс imp хорош, может попозже с ним перепишу. Но это , конечно, жесть...

Gukl ★★★
() автор топика

Re: [python][недоумение]Импортировать все файлы модуля так и не?!

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

Gukl ★★★
() автор топика

Re: [python][недоумение]Импортировать все файлы модуля так и не?!

> Но это , конечно, жесть...

Это фича. Представь, что тебе _не нужно_ импортировать всё из всех файлов пакета.

tailgunner ★★★★★
()

Re: [python][недоумение]Импортировать все файлы модуля так и не?!

> Это фича. Представь, что тебе _не нужно_ импортировать всё из всех файлов пакета.

Представил... Хорошо! Вернулся в реальность -- таки нужно ;) Не все из всех, а все _модули_ пакета, кстати. Все из всех как раз не должно автоматом литься.

Gukl ★★★
() автор топика

Re: [python][недоумение]Импортировать все файлы модуля так и не?!

> Представь, что тебе _не нужно_ импортировать всё из всех файлов пакета.

И, кстати, нафига мне в таком случае нужен импортированный _пустой_ пакет?

Gukl ★★★
() автор топика

Re: [python][недоумение]Импортировать все файлы модуля так и не?!

> Ты хочешь странного.

Я хочу _очевидного_, вообще-то ;) Доку прочел в первую очередь.

Gukl ★★★
() автор топика

Re: [python][недоумение]Импортировать все файлы модуля так и не?!

>В ините напиши импорты из всех файлов класса. Что-то типа такого:

О, я сам так и поступил в свое время.

YogSagot ★★
()

Re: [python][недоумение]Импортировать все файлы модуля так и не?!

Ну или посканировать всю окресную директорию и импортировать все найденный файлы, еще удобней (при добавлении новых не надо ничего переписывать). Я так сделал.

Gukl ★★★
() автор топика

Re: [python][недоумение]Импортировать все файлы модуля так и не?!

Обычно нужно импортировать хоть что-то, а import Package не импортирует вообще ничего. Дзенский подход такой.

Опять же, за всех не говорю, но мне обычно надо свои модули импортировать все. Какой мне смысл для конкретной программы писать модуль, который никогда в ней не используется?

Gukl ★★★
() автор топика

Re: [python][недоумение]Импортировать все файлы модуля так и не?!

> Это фича. Представь, что тебе _не нужно_ импортировать всё из всех файлов пакета.

Ох уж эти иллюзионисты-питонщики... Вместо того, чтобы сделать как в Лиспе, они воображение развивают...

mv ★★★★★
()

Re: [python][недоумение]Импортировать все файлы модуля так и не?!

> Какой мне смысл для конкретной программы писать модуль, который никогда в ней не используется?

Просто есть сугубо внутренние классы, функции и переменные, которые незачем другим модулям.

provaton ★★★★★
()

Re: [python][недоумение]Импортировать все файлы модуля так и не?!

Интересно посмотреть на код, который использует ВСЕ модули пакета.

Ну или посканировать всю окресную директорию и импортировать все найденный файлы, еще удобней (при добавлении новых не надо ничего переписывать). Я так сделал.

Также интересно, сколько модулей в пакете и как часто они появляются.

$ cat __init__.py

import os.path
import glob

MODULE_DIR = os.path.abspath(os.path.split(__file__)[0])

modules = ( os.path.splitext(os.path.basename(m))[0]
    for m in glob.glob(os.path.join(MODULE_DIR, '*.py')) )

__all__ = [m for m in modules if m != '__init__']
baverman ★★★
()

Re: [python][недоумение]Импортировать все файлы модуля так и не?!

> Интересно посмотреть на код, который использует ВСЕ модули пакета.

Пакет написан специально для этого кода, есествено, нужен целиком. Кстати, спасибо за пример - я-то решил, что переменную __all__ динамически заполнять рискованно.

Gukl ★★★
() автор топика

Re: [python][недоумение]Импортировать все файлы модуля так и не?!

> Вместо того, чтобы сделать как в Лиспе, они воображение развивают...

ИМХО, Лиспом Гвидо вдохновлялся, есть легкое сходство. "Лямбда", декораторы...

Gukl ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.