首页 > 解决方案 > Python 将函数导入到另一个目录中的文件,该文件又从其自己的目录中导入另一个函数

问题描述

我需要将文件 X 的函数 x 从目录 A 导入目录 B 的文件 Y,但文件 X 还从 A 目录本身导入文件 Z 的函数 z。目录 A 在目录 C 内,目录 B 和 C 处于同一级别。我尝试将 A 添加到 sys 路径并执行“从 X 导入 x”,但它没有抛出任何模块发现错误,并且我将 C 添加到路径并从 AX 导入 x 但同样的错误。Y 能够从 X 导入 x,但是当 X执行并读取 Z 的导入会引发错误。

目录结构:

├───C
│   ├───A
│   │   ├───X
│   │   ├───Z
└───B
    └───Y

标签: pythonimportmodule

解决方案


我草草写了你说的目录结构,以理解由于声誉低下而无法发布的问题。

Python 从您现在执行文件的位置解析文件导入路径

有两种三种方法可以实际导入文件 z

一种方法是在导入某些内容之前使用 os.chdir() 更改目录,以便解析路径,但不推荐这样做

另一种方法是您将 z 添加到您的 sys.path 这样您不必解析路径,但是每当您编写 import x from X 或 Z from z 时,python 解释器都会查看 A 文件夹

但请确保您在 sys.path 中添加的路径来自当前目录或者它是完整路径。

您还可以将 A 文件夹添加到 PYTHONPATH


推荐阅读