2024-05-20 18:43:53 发布
网友
我正在运行Python2.5。
这是我的文件夹树:
ptdraft/ nib.py simulations/ life/ life.py
(我在每个文件夹中都有__init__.py,为了可读性这里省略)
__init__.py
如何从life模块内部导入nib模块?我希望不用修改sys.path就可以做到。
life
nib
注意:正在运行的主模块位于ptdraft文件夹中。
ptdraft
相对导入(如from .. import mymodule)只在包中工作。 要导入当前模块的父目录中的“mymodule”:
from .. import 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__)
__file__
os.path.abspath(__file__)
可以使用相对导入(python>;=2.5):
from ... import nib
(What’s New in Python 2.5) PEP 328: Absolute and Relative Imports
编辑:添加另一个点“.”以向上移动两个包
这个问题似乎与模块位于父目录或类似目录中无关。
您需要将包含ptdraft的目录添加到PYTHONPATH
你说import nib和你一起工作,这可能意味着你在PYTHONPATH中添加了ptdraft本身(不是它的父级)。
import nib
相对导入(如
from .. import mymodule
)只在包中工作。 要导入当前模块的父目录中的“mymodule”:编辑:并非总是给出
__file__
属性。我现在建议使用inspect模块来检索当前文件的文件名(和路径),而不是使用os.path.abspath(__file__)
可以使用相对导入(python>;=2.5):
(What’s New in Python 2.5) PEP 328: Absolute and Relative Imports
编辑:添加另一个点“.”以向上移动两个包
这个问题似乎与模块位于父目录或类似目录中无关。
您需要将包含
ptdraft
的目录添加到PYTHONPATH你说
import nib
和你一起工作,这可能意味着你在PYTHONPATH中添加了ptdraft
本身(不是它的父级)。相关问题 更多 >
编程相关推荐