Jump to content

  • Log In with Google      Sign In   
  • Create Account


Python import syntax problem


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
2 replies to this topic

#1 Misery   Members   -  Reputation: 247

Like
0Likes
Like

Posted 28 December 2011 - 04:18 PM

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

Sponsor:

#2 thok   Members   -  Reputation: 588

Like
1Likes
Like

Posted 28 December 2011 - 04:55 PM

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?

#3 Misery   Members   -  Reputation: 247

Like
0Likes
Like

Posted 29 December 2011 - 03:29 AM

Geee :)
Thanks very much thok.
That helped a lot!
Regards




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS