不同目录结构下的Python导入

3 投票
2 回答
974 浏览
提问于 2025-04-15 19:23

我正在做一个项目,这个项目的所有代码都被分成了不同的模块目录,比如:

modules/check/lib/check.py
modules/edit/lib/edit.py

在安装的时候,Python 文件会被放到 Python 的 site-packages 目录下的同一个文件夹 program_name 里。因此,所有模块都使用 import program_name.edit 这样的语法来导入。

由于目录和导入的结构,源代码模块之间无法相互导入,所以每次想要运行源代码树中的任何东西时,都必须重新安装它们。

所以我想问的是:在不改变目录结构的情况下,如何确保 modules/check/lib/check.py 能够从 modules/edit/lib/edit.py 导入,以及 site-packages/program_name/check.py 能够从 site-packages/program_name/edit.py 导入?另外,如果将来需要重新组织,像这样的环境中,目录结构和导入的最佳实践是什么?

2 个回答

0

你为什么不在你的开发机器上安装指向prog_name的符号链接呢?

2

你可以把 /modules/ 这个文件夹加到你开发环境的 PYTHONPATH 里。这样一来,当你把它安装到 site-packages 里后,在 check.py 里调用 import edit 就会导入正确的模块,因为它们在同一个目录下。而如果你在开发环境里调用 import edit,那就会导入你加到 PYTHONPATH 里的那个模块。

撰写回答