从父文件夹导入模块
我正在运行Python 2.5。
这是我的文件夹树:
ptdraft/
nib.py
simulations/
life/
life.py
(我在每个文件夹中都有__init__.py
,这里为了便于阅读而省略)
如何从life
模块内部导入nib
模块? 我希望有可能没有修补sys.path。
注意:正在运行的主模块位于ptdraft
文件夹中。
看来这个问题与模块在父目录或类似的东西中没有关系。
您需要将包含ptdraft
的目录添加到PYTHONPATH中
你说import nib
与你一起工作,这可能意味着你将ptdraft
本身(而不是它的父类)添加到PYTHONPATH中。
你可以使用相对导入(python> = 2.5):
from ... import nib
(Python 2.5中的新功能)PEP 328:绝对和相对导入
编辑 :添加另一个点'。' 去两个包
相对导入(如from .. import mymodule
)只能在包中使用。 要导入当前模块父目录中的'mymodule':
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
编辑 : __file__
属性并不总是给出。 我现在建议使用inspect模块来检索当前文件的文件名(和路径),而不是使用os.path.abspath(__file__)