python - 从本地项目目录中的任何位置导入
问题描述
我目前正在开发一个面向对象的更大项目,其中包含多个我从主类调用的自写子模块。在子模块中,我目前正在导入更多模块。这是它目前的样子:
[] 表示文件夹
[Project]
> project.py
> [Module 1]
> __init__.py
> module1.py
> [proxyHandler]
> __init__.py
> proxyHandler.py
> [Module 2]
> __init__.py
> module2.py
> [proxyHandler]
> __init__.py
> proxyHandler.py
这个列表持续了大约 10 个模块,尽管 proxyHandler 并非一直 100% 相同,但我认为我可以制作一个处理所有情况的 proxyHandler。现在我在每个模块中都有 proxyHandler 文件夹,我想避免并执行以下操作。
[Project]
> project.py
> [libs]
> [proxyHandler]
> __init__.py
> proxyHandler.py
> [Module 1]
> __init__.py
> module1.py
> [Module 2]
> __init__.py
> module2.py
我将如何继续从库中导入它,所以我没有在每个模块中复制和粘贴 proxyHandler。如果解决方案允许在最后使用 py2exe 将代码编译为 exe 到单个文件中,那也很棒。
非常感谢提前
解决方案
如果您运行 project.py,则文件夹 [Project] 将添加到 sys.path。所以你可以像这样导入模块
from libs import proxyHandler
从任何模块。
或者,您可以使用相对导入:
from ..libs import proxyHandler
你也可以像这样将任何文件夹添加到 sys.path 中:
import sys
sys.path.append(folder)