不同目录结构下的Python导入
我正在做一个项目,这个项目的所有代码都被分成了不同的模块目录,比如:
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 里的那个模块。