python - 项目结构,如何创建独立工作的子包?
问题描述
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
),任何帮助,链接感谢,谢谢
解决方案
一种应该有效的解决方案:
- 在子包中添加
__init__.py
, - 在 PYTHONPATH 中添加子包目录,您也可以使用 : 来完成
sys.path.append(PATH_TO_THE_SUBPACKAGE)
。
该包现在是 PYTHONPATH 的一部分,因此您可以像导入任何其他库一样使用import config
.
推荐阅读
- c# - 如何使用 SslStream 连接进行 ActiveMQ 通信
- jdbc - 如何在单个 Kafka 连接器属性文件中配置多个自定义查询
- python - 使用 '=' 操作符复制 numpy 数组。为什么它有效?
- flutter - Flutter:首次提交时无法获取文本字段值
- openshift - Openshift 上的自定义 Ha-proxy
- loopbackjs - LoopBack v4 中对其他微服务的强类型调用
- c# - Enable-Migrations - 无法将参数绑定到参数“路径”
- javascript - 如何在 ReactJS 中创建一个包含所有验证和错误处理的通用文本框?
- azure-devops - 将 Azure CLI 任务的结果存储到发布变量中
- android - 应用程序运行时不起作用 - 权限错误