当前位置:   article > 正文

Python | 从子目录文件导入父目录模块的方法_python导入父目录中的模块

python导入父目录中的模块

问题描述

我有两级目录,第一级称为parent_dir,第二级称为child_dir。现在在child_dir下,有一个py,称为child.py,在parent_dir下,也有一个py,称为parent.py。

我想从child.py中导入parent.py中的方法,应该怎么做?假设这个方法叫做some_method。

我可以直接在child.py当中写 from parent import some_method 吗

问题回答

直接使用 `from parent import some_method` 这种方式可能会遇到导入错误,因为 Python 的导入机制默认是从当前目录或者安装在系统中的包中查找模块。如果 `parent.py` 位于 `child.py` 的上级目录中,Python 在默认的情况下不会去搜索这个上级目录。

要从 `child.py` 中导入 `parent.py` 中的 `some_method` 方法,你需要确保 Python 能够找到这个上级目录。一种常用的方法是修改 `sys.path`,`sys.path` 是 Python 寻找模块的路径集合。你可以将 `parent_dir` 目录添加到 `sys.path` 中,这样 Python 就能够找到并导入 `parent.py` 了。以下是一个示例:

  1. import sys
  2. import os
  3. # 添加 parent_dir 到 sys.path
  4. current_dir = os.path.dirname(__file__)
  5. parent_dir = os.path.dirname(current_dir)
  6. sys.path.append(parent_dir)
  7. from parent import some_method

这里,`os.path.dirname(__file__)` 会得到当前文件(`child.py`)的目录路径,然后使用 `os.path.dirname()` 再次调用得到父目录路径,即 `parent_dir`。将这个路径添加到 `sys.path` 后,就可以正常从 `parent.py` 导入所需的函数或类了。

请注意,这种方法虽然实用,但在一些情况下可能会引起路径问题,尤其是在大型项目中。更好的做法是组织你的代码为一个包,这样可以使用相对导入(如果 `parent_dir` 和 `child_dir` 设计为包的一部分)。但这需要根据你的项目结构和需求来决定。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/1000955
推荐阅读
相关标签
  

闽ICP备14008679号