从父文件夹导入模块

2022-09-05 01:15:22

我正在运行Python 2.5。

这是我的文件夹树:

ptdraft/
  nib.py
  simulations/
    life/
      life.py

(我在每个文件夹中也有,为了便于阅读,这里省略了)__init__.py

如何从模块内部导入模块?我希望有可能在不修改sys.path的情况下完成。niblife

注意:正在运行的主模块位于文件夹中。ptdraft


答案 1

你可以使用相对导入(python >= 2.5):

from ... import nib

(Python 2.5 中的新增功能)PEP 328:绝对和相对进口

编辑:添加了另一个点'.'以上升两个包


答案 2

相对导入(如 中所示)仅适用于包。导入当前模块父目录中的“mymodule”:from .. import mymodule

import os
import sys
import 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__os.path.abspath(__file__)


推荐