confusion about package/module imports

Jugdish danebarney at gmail.com
Tue Jan 1 15:26:38 EST 2008


Why doesn't the following work?

>>> ls $HOME
$HOME/pkg/__init__.py
$HOME/pkg/subpkg/__init__.py
$HOME/pkg/subpkg/a.py
$HOME/pkg/subpkg/b.py

>>> cat $HOME/pkg/__init__.py
# empty

>>> cat $HOME/pkg/subpkg/__init__.py
import a
import b

>>> cat $HOME/pkg/subpkg/a.py
class A:
    pass

>>> cat $HOME/pkg/subpkg/b.py
import pkg.subpkg.a
class B(pkg.subpkg.a.A):
    pass

>>> setenv PYTHONPATH $HOME:$PYTHONPATH
>>> python $HOME/pkg/subpkg/b.py
Traceback (most recent call last):
  File "pkg/subpkg/b.py", line 1, in ?
    import pkg.subpkg.a
  File "$HOME/pkg/subpkg/__init__.py", line 2, in ?
    import b
  File "$HOME/pkg/subpkg/b.py", line 2, in ?
    class B(pkg.subpkg.a.A):
AttributeError: 'module' object has no attribute 'subpkg'



More information about the Python-list mailing list