Hi there,
I am creating a package for fluid mechanics computation, and I want this to have very clear structure. Lets say:
FluidPackage
+--1D
---+Channels
------------+ChannelCrossSection.py
------------+Channel.py
---+Pipes
------------+Pipes.py
----+GroundWater
+--2D
---+Channels
---+Pipes
---+GroundWater
...
---+Warnings
------+MyWarnings.py
---+Errors
------+MyErrors.py
I want to create a common folders/modules for errors and warnings. How do I import them into all other files. For example:
from MyWarnings ImportCnvergenceWarning
I have read in Mark Lutz book that I can do it only if I have created the whole package, and imported it. Like:
..Errors.MyErrors import PyFluidWrongArgumentError
is there any more flexible way? So that I could directly import Errors from f.ex. Pipes.py?
I dont want to put all those files in one folder because it would get a bit messy.
Thanks for answers,
Regards
Misery
For reference, I would read this: http://docs.python.org/tutorial/modules.html#packages
To address your question more directly:
It seems like you're a bit confused, so I'll try to give you a clear and complete example to explain.
Your base package is `FluidPackage`.
This package (and all subpackages) must contain a file called `__init__.py`. This file can be blank.
So, to get started creating this structure, I whipped up this little command-by-command guide that you can follow: http://pastie.org/3087147 (Note: `touch` will of course not work if you're on Windows. `touch` just creates a blank file.)
Now, if you want to import your code from anywhere, you need to have the folder containing the base `FluidPackage` in your Python path.
As for importing, for example, MyErrors within FluidPackage/1D/Channels/Channels.py (or any other module), you would write this:
from FluidPackage.Errors import MyErrors
or
from FluidPackage.Errors.MyErrors import SomeErrorClass
This will work as long as your Python path is set properly. Does that help?