LINUX.ORG.RU
 
Gukl

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


0

0

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

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

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

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

СКАЖИ СВОЕМУ КОМПЬЮТЕРУ, ЧТОБЫ ЗАПЕР ДВЕРЬ

любительская автоматизация; устройство с открытой прошивкой
исходные тексты всех программ, открытые библиотеки
http://www.unicontrollers.com/products/unc01x

[#]  

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

*** ()
Gukl

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

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

** ()
Gukl

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

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

** ()
Gukl

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

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

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

** ()
Gukl

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

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

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

** ()
Gukl

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

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

** ()
Gukl

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

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

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

** ()
mv

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

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

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

***** ()

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

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

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

*** ()

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__']
** ()
Gukl

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

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

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

** ()
Gukl

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

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

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

** ()