Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

relative path not working even with __init__.py

Tags:

I know that there are plenty of similar questions on stack overflow. But the common answer doesn't seem to be working for me.

I have a file structure like this

  proj/        lib/           __init__.py           aa.py           bb.py           test/                __init__.py                aa_test.py 

I figured that if I include the code in my test.py

import lib.aa 

or

from lib import aa 

I would be able to reference the modules in the lib/ directory. But that did not work.

So I tried to add to path, and it adds it correctly:

os.environ["PATH"] += ":%s" % os.path.abspath(os.path.join("..","")) print os.environ["PATH"] 

but even now when I try the import statements above... I keep getting the error

ImportError: No module named aa 

or

ImportError: Importing from non-package <Something...> 

Is there something obvious I am missing?

Is there a way to check if I have configured my __init__.py files correctly, or to see my package hierarchy?

like image 719
samirahmed Avatar asked Feb 24 '12 07:02

samirahmed


1 Answers

You need to update your sys.path, which is where python looks for modules, as opposed to your system's path in the current environment, which is what os.environ["PATH"] is referring to.

Example:

import os, sys sys.path.insert(0, os.path.abspath("..")) import aa 

After doing this, you can use your functions in aa like this: aa.myfunc()

There's some more information in the accepted answer for python: import a module from a directory

like image 147
Caspar Avatar answered Sep 29 '22 13:09

Caspar