472,127 Members | 1,598 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,127 software developers and data experts.

import question

Question:
my src path looks like this:
src\root\sub1
src\root\sub2

My main code is in root, lets say main.py and there is also a lib.py.
In sub1 there if foo1.py and sub2 foo2.py

Sorry for the long introduction...please don't stop reading... :-(

In both sub1 and sub2 there is an empty __init__.py for making them a package.
Ok the problem:

this works fine:

main.py
from sub1 import foo1
from sub1 import foo2

However, in foo1 and foo2 I have this line "import lib".

So lib.py is not in the same path as foo1.py and foo2.py, it seems to find lib.py in a higher path.
(Reason for this is the import from main , which has lib.py in the same path?)

However, if I'm in the subfolders sub1 or sub2, and I run foo1.py or foo2.py standalone, they can't find lib.py. Yeah of course.

So, how to avoid this? How can I refer back to a module higher in the "hierarchical" path.
Up is so easy.. just say import foo.foo2.foo3. But up, what is the correct way of doing that?
Something to put in __init__.py, like sys.path.apppend('..')? Looks ugly to me....

Or, the way how I share lib for both files is wrong, please let me know.
Anyway, I need this behavior because of my unittest structure.

Thanks,
Vincent

Jul 18 '05 #1
1 1581
> So, how to avoid this? How can I refer back to a module higher in the "hierarchical" path.
Up is so easy.. just say import foo.foo2.foo3. But up, what is the correct way of doing that?
Something to put in __init__.py, like sys.path.apppend('..')? Looks ugly to me....


PEP 328, Relative imports should take care of your issue.

In the meantime...

#in main.py
import lib

#in foo1.py and foo2.py
import sys
lib = sys.modules['lib']
Now both of them will refer to the same 'lib' that main.py imported.

- Josiah
Jul 18 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

1 post views Thread by Kevin MacKenzie | last post: by
reply views Thread by Stian Søiland | last post: by
2 posts views Thread by Charles Fineman | last post: by
4 posts views Thread by Bruce W. Roeser | last post: by
3 posts views Thread by SMALLp | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.