项目结构,如何创建可独立工作的子包?

时间:2019-03-07 13:09:42

标签: python python-3.x package git-submodules

Python 3.6+,目录结构:

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

main.py:

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

submain.py:

from config import config_param
attribute1 = 1 + config_param

config.py:

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),任何帮助,链接表示感谢,谢谢

2 个答案:

答案 0 :(得分:1)

尝试在目录https://docs.python.org/3/tutorial/modules.html中添加ServletContextHandler个文件

答案 1 :(得分:0)

一种可行的解决方案:

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

该软件包现已成为PYTHONPATH的一部分,因此您可以像使用import config导入任何其他库一样将其导入。