En Thu, 03 May 2007 12:41:00 -0300, Brian Blais <[EMAIL PROTECTED]> escribió:
> I am trying to organize some of my code, and am having a little trouble > with the import logic. I find I often have something like: > > MyPackage/ > Part1/ # wants to use functions in Common/ > __init__.py # does "from MyClass1 import MyClass1", etc,... > MyClass1.py > MyClass1a.py # depends on MyClass1 > MyClass1b.py # depends on MyClass1 > > Part2/ # wants to use functions in Common/ > __init__.py # does "from MyClass2 import MyClass2", etc,... > MyClass2.py # depends on MyClass1 also, such as containing a > list of MyClass1 > MyClass2a.py # depends on MyClass2 > MyClass2b.py # depends on MyClass2 > > Common/ > __init__.py # does "import fun1,fun2", etc,... > fun1.py > fun2.py > > > > So I have some common utilities that both classes want to access, and I > have two separate class definitions, of which one depends on the other. > In MyClass2.py, I can't seem to do: > > import Common.fun1 > > or > > from Part1.MyClass1 import MyClass1 To be able to do that, MyPackage should be on sys.path If its *container* (i.e. the directory containing MyPackage, perhaps site-packages) is already on sys.path, you could prefix all imports with the package name: import MyPackage.Common.fun1, or from MyPackage.Part1 import MyClass1 (Dont forget the __init__.py on MyPackage, to make it a real package) If you are using Python 2.5, you can use relative imports. Read the "What's new" document. In MyClass2.py you could use, then: from ..Common import fun1, or: from ..Part1.MyClass1 import MyClass1 -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list