首页 > 解决方案 > 项目结构,如何创建独立工作的子包?

问题描述

Python 3.6+,目录结构:

project/
   main.py
   subpackage/
      submain.py
      config.py

主要.py:

from subpackage.submain import attribute1
if __name__ == "__main__":
    print(attribute1)

子主.py:

from config import config_param
attribute1 = 1 + config_param

配置文件:

config_param = 100

它抛出错误:

Traceback (most recent call last):
File "/projects/test/project/main.py", line 1, in <module>
from subpackage.subname import attribute1
File "/projects/test/project/subpackage/subname.py", line 1, in <module>
from config import config_param
ModuleNotFoundError: No module named 'config'

我们在我们的项目中使用了几个 gitsubmodule,现在它适用于:

from .config import config_param

但我确信这是错误的解决方案,因为它已经需要在某些文件夹/文件夹/文件夹中创建这样的相对导入 ...config 或 ../../../config。
我已经花了一个星期来寻找如何做到这一点,以便子包可以独立工作(from config import config_param),任何帮助,链接感谢,谢谢

标签: pythonpython-3.xpackagegit-submodules

解决方案


一种应该有效的解决方案:

  • 在子包中添加__init__.py
  • 在 PYTHONPATH 中添加子包目录,您也可以使用 : 来完成 sys.path.append(PATH_TO_THE_SUBPACKAGE)

该包现在是 PYTHONPATH 的一部分,因此您可以像导入任何其他库一样使用import config.


推荐阅读