Python import syntax problem

Started by
1 comment, last by Misery 12 years, 3 months ago
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
Advertisement

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?
Geee :)
Thanks very much thok.
That helped a lot!
Regards

This topic is closed to new replies.

Advertisement