leechau wrote: > I wrote module1 in package1, and want to use a method named 'method1' in > module1, the caller(test.py) is like this: > > import package1 > package1.module1.method1() [...] > When i run test.py, the output is: > AttributeError: 'module' object has no attribute 'module1' > File "e:\MyDoc\GODU_BVT\test.py", line 2, in <module> > package1.module1.method1() > > If test.py is modified to: > import package1.module1 > ... > then everything goes well.
Yes, that is correct, and that is a deliberate design. What if your package had a 1000 sub-modules, each of which were big? You wouldn't want loading the main package to automatically load all 1000 sub-modules, if you only needed 1. You either import the sub-module by hand: import package1.module1 and now you can use package1.module1.method1 (not really a method, actually a function). If you want module1 to automatically be available after importing the package, include one of these in the package1 __init__.py file: import module1 # should work in Python 2 and now package1 will include the module1 in its namespace. -- Steven _______________________________________________ Tutor maillist - [email protected] To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
