import question

  • Thread starter Raaijmakers, Vincent \(GE Infrastructure\)
  • Start date
R

Raaijmakers, Vincent \(GE Infrastructure\)

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
 
J

Josiah Carlson

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,056
Latest member
GlycogenSupporthealth

Latest Threads

Top