Importing modules from parent folder
I am running Python 2.5.
This is my folder tree:
ptdraft/
nib.py
simulations/
life/
life.py
(I also have __init__.py
in each folder, omitted here for readability)
How do I import the nib
module from inside the life
module? I am hoping it is possible to do without tinkering with sys.path.
Note: The main module being run is in the ptdraft
folder.
It seems that the problem is not related to the module being in a parent directory or anything like that.
You need to add the directory that contains ptdraft
to PYTHONPATH
You said that import nib
worked with you, that probably means that you added ptdraft
itself (not its parent) to PYTHONPATH.
You could use relative imports (python >= 2.5):
from ... import nib
(What's New in Python 2.5) PEP 328: Absolute and Relative Imports
EDIT : added another dot '.' to go up two packages
Relative imports (as in from .. import mymodule
) only work in a package. To import 'mymodule' that is in the parent directory of your current module:
import os,sys,inspect
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)
sys.path.insert(0,parentdir)
import mymodule
edit : the __file__
attribute is not always given. Instead of using os.path.abspath(__file__)
I now suggested using the inspect module to retrieve the filename (and path) of the current file
上一篇: 如何指示脚本的当前目录不是我?
下一篇: 从父文件夹导入模块