赞
踩
我有两级目录,第一级称为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` 了。以下是一个示例:
- import sys
- import os
-
- # 添加 parent_dir 到 sys.path
- current_dir = os.path.dirname(__file__)
- parent_dir = os.path.dirname(current_dir)
- sys.path.append(parent_dir)
-
- from parent import some_method
这里,`os.path.dirname(__file__)` 会得到当前文件(`child.py`)的目录路径,然后使用 `os.path.dirname()` 再次调用得到父目录路径,即 `parent_dir`。将这个路径添加到 `sys.path` 后,就可以正常从 `parent.py` 导入所需的函数或类了。
请注意,这种方法虽然实用,但在一些情况下可能会引起路径问题,尤其是在大型项目中。更好的做法是组织你的代码为一个包,这样可以使用相对导入(如果 `parent_dir` 和 `child_dir` 设计为包的一部分)。但这需要根据你的项目结构和需求来决定。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。