Followers 0

# Python import syntax problem

## 2 posts in this topic

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:
[code]
from MyWarnings ImportCnvergenceWarning
[/code]
I have read in Mark Lutz book that I can do it only if I have created the whole package, and imported it. Like:
[code]
..Errors.MyErrors import PyFluidWrongArgumentError
[/code]
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.

Regards
Misery
0

##### Share on other sites
[quote name='Misery' timestamp='1325110697' post='4897626']
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:
[code]
from MyWarnings ImportCnvergenceWarning
[/code]
I have read in Mark Lutz book that I can do it only if I have created the whole package, and imported it. Like:
[code]
..Errors.MyErrors import PyFluidWrongArgumentError
[/code]
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.

Regards
Misery
[/quote]

For reference, I would read this: http://docs.python.org/tutorial/modules.html#packages

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?
1

##### Share on other sites
Geee
Thanks very much thok.
That helped a lot!
Regards
0

## Create an account

Register a new account

Followers 0

• 28
• 12
• 11
• 31
• 20