首页 > 解决方案 > 从本地项目目录中的任何位置导入

问题描述

我目前正在开发一个面向对象的更大项目,其中包含多个我从主类调用的自写子模块。在子模块中,我目前正在导入更多模块。这是它目前的样子:

[] 表示文件夹

[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 到单个文件中,那也很棒。

非常感谢提前

标签: pythonimportmodulepython-module

解决方案


如果您运行 project.py,则文件夹 [Project] 将添加到 sys.path。所以你可以像这样导入模块

from libs import proxyHandler

从任何模块。

或者,您可以使用相对导入:

from ..libs import proxyHandler

你也可以像这样将任何文件夹添加到 sys.path 中:

import sys
sys.path.append(folder)

推荐阅读