🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
3 messages
3 total messages Started by zbrodel Sat, 28 Mar 2009 11:36
Problem z importami
#25928
Author: zbrodel
Date: Sat, 28 Mar 2009 11:36
30 lines
1159 bytes
Witam bardzo :)

Jaka może być przyczyna takiego oto zachowania:

Jest moduł, dajmy na to aaa
W nim powinien być bbb

i teraz:
import aaa
aaa.bbb
krzyczy że *** AttributeError: 'module' object has no attribute 'bbb'

no i faktycznie
dir(aaa)

nie pokazuje żeby w aaa było bbb

Ale jak zrobie:
from aaa import bbb

to jest OK

Dodam, że bbb to też pakiet.

Struktura katalogów wygląda OK, pliki __init__.py są tam gdzie trzeba.

Czego szukać?

TIA
J.
Re: Problem z importami
#25929
Author: Piotr Husiatyński
Date: Sat, 28 Mar 2009 13:25
30 lines
1728 bytes
On Mar 28, 12:36 pm, zbro...@tlen.pl wrote:
> Witam bardzo :)
>
> Jaka może być przyczyna takiego oto zachowania:
>
> Jest moduł, dajmy na to aaa
> W nim powinien być bbb
>
> i teraz:
> import aaa
> aaa.bbb
> krzyczy że *** AttributeError: 'module' object has no attribute 'bbb'
>
> no i faktycznie
> dir(aaa)
>
> nie pokazuje żeby w aaa było bbb
>
> Ale jak zrobie:
> from aaa import bbb
>
> to jest OK
>
> Dodam, że bbb to też pakiet.
>
> Struktura katalogów wygląda OK, pliki __init__.py są tam gdzie trzeba.
>
> Czego szukać?

import aaa.bbb
Re: Problem z importami
#25930
Author: Rob Wolfe
Date: Sat, 28 Mar 2009 16:28
43 lines
1880 bytes
zbrodel@tlen.pl writes:

> Witam bardzo :)
>
> Jaka może być przyczyna takiego oto zachowania:
>
> Jest moduł, dajmy na to aaa
> W nim powinien być bbb
>
> i teraz:
> import aaa
> aaa.bbb
> krzyczy że *** AttributeError: 'module' object has no attribute 'bbb'
>
> no i faktycznie
> dir(aaa)
>
> nie pokazuje żeby w aaa było bbb
>
> Ale jak zrobie:
> from aaa import bbb
>
> to jest OK
>
> Dodam, że bbb to też pakiet.
>
> Struktura katalogów wygląda OK, pliki __init__.py są tam gdzie trzeba.
>
> Czego szukać?

Mam wrażenie, iż oczekujesz, że import pakietu powoduje automatyczne
załadowanie wszystkich modułów w nim zawartych. Nic podobnego.
Import pakietu powoduje tylko uruchomienie kodu w `__init__.py`.
Możesz ten plik mieć pusty (wtedy import pakietu nie importuje
żadnych modułów) lub możesz dodać importy modułów jakie chcesz
mieć zaimportowane po zaimportowaniu pakietu.
Możesz też importować moduł zawarty w pakiecie bezpośrednio, 
tak:
import aaa.bbb
albo tak:
from aaa import bbb

RW
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads