您现在的位置是:首页 >技术教程 >python工程中import要点提炼网站首页技术教程

python工程中import要点提炼

海棠花不香 2024-06-02 00:00:02
简介python工程中import要点提炼

目前笔者正在用python开发的工程,目录这样组织

project/						# 项目目录
    lib1/						# 与数据导入,解析,计算有关的功能
        __init__.py
        dataload.py				# 包含有 load函数
        dataspar.py
        compute.py				# 包含有 compute函数
        ...
    lib2/						# 数据导入耗时,计算用的模型
        __init__.py
        model.py				# 包含有 model 类
        time.py
        ...
    doc/						# 项目文档目录
    app.py						# 主要功能的集成,内部测试用
    servicecase.py				# 主要功能的集成,对外服务用
    README.md   

这个工程中模块之间有这样的依赖关系:

  1. 同一个子目录之间有依赖,lib1中的 compute 中要依赖 dataload 模块

  2. 不同的子目录之间有依赖,lib1中的 compute 要依赖 lib2中的 model 模块

  3. 父目录对子目录有依赖,app 和servicecase 要依赖 lib1 中 的compute 模块

解决方式:

  1. 同一个子目录之间导入,compute 导入dataload 的 load 函数。使用相对导入
from .dataload import load # 在compute.py中

注意,这里需要加.,限定在当前./lib1目录中寻找dataload模块。

  1. 不同子目录之间导入,compute 导入 model 中的 model 类。将上级目录加入搜索路径后导入
import sys # 在compute.py中
sys.path.append('..')
from lib2.model import model

注意sys.path.append这句是将上一级目录,即./project目录加入库搜索路径。然后问题就转化为,如何在父目录导入子目录内的类或函数,请查看下一条。

  1. 父目录导入子目录的类或函数,import 包名.模块 即可
from lib1.compute import compute # 在servicecase.py中

总结

主要留意解决方式中的第1,2点,相信这也是很多人能看到这里的原因。主打一个信息提炼,没有废话,就是情景展示vs解决方式。如果还不能解决你的问题,请留言讨论。

参考文档

Python-import导入上级目录文件

Python项目如何合理组织规避import天坑

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。