如何从相对路径导入Python模块?
我有以下的文件结构:
我想在 main.py
文件中初始化一些对象,这些对象属于 Listener
、Parser
和 Configurations
文件夹里的模块。
我知道不能直接写 import listener
,因为它不在同一个路径下。有没有简单的方法可以让导入正常工作,而不需要把路径添加到 PYTHONPATH
环境变量里?有没有办法可以在任何机器上“开箱即用”,不需要添加路径到 PYTHONPATH
或者类似的解决方案?最好是像 C++ 那样使用相对路径的方法。
1 个回答
0
可能是重复的问题:在Python中从相对路径导入
简单来说,你需要在main.py
里以编程的方式定义PYTHONPATH
,像这样:
import sys, os
sys.path.append(os.path.dirname(__file__))
这样做会自动把当前目录添加到PYTHONPATH
里。后面的部分就很简单了。
在每个目录里创建一个__init__.py
文件。之后,你就可以像这样导入每个模块:from Listener import ...
或者from Misc import ...
等等。
这种方法可以直接使用,不需要重新定义任何环境变量。