从父文件夹导入模块

我正在运行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__)

链接地址: http://www.djcxy.com/p/54703.html

上一篇: Importing modules from parent folder

下一篇: How do I find the location of the executable in C?