python工程中import要点提炼

简介: 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天坑

相关文章
|
9月前
|
数据可视化 数据挖掘 开发者
import有什么用,python中怎么使用import
import有什么用,python中怎么使用import
128 1
|
2月前
|
算法 数据处理 Python
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
Savitzky-Golay滤波器是一种基于局部多项式回归的数字滤波器,广泛应用于信号处理领域。它通过线性最小二乘法拟合低阶多项式到滑动窗口中的数据点,在降噪的同时保持信号的关键特征,如峰值和谷值。本文介绍了该滤波器的原理、实现及应用,展示了其在Python中的具体实现,并分析了不同参数对滤波效果的影响。适合需要保持信号特征的应用场景。
171 11
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
|
29天前
|
缓存 JSON 数据处理
Python进阶:深入理解import机制与importlib的妙用
本文深入解析了Python的`import`机制及其背后的原理,涵盖基本用法、模块缓存、导入搜索路径和导入钩子等内容。通过理解这些机制,开发者可以优化模块加载速度并确保代码的一致性。文章还介绍了`importlib`的强大功能,如动态模块导入、实现插件系统及重新加载模块,展示了如何利用这些特性编写更加灵活和高效的代码。掌握这些知识有助于提升编程技能,充分利用Python的强大功能。
28 4
|
7月前
|
数据采集 机器学习/深度学习 Python
【Python】已完美解决:ImportError: cannot import name ‘Imputer‘ from ‘sklearn.preprocessing
【Python】已完美解决:ImportError: cannot import name ‘Imputer‘ from ‘sklearn.preprocessing
477 3
|
6月前
|
算法 TensorFlow 算法框架/工具
写Python时不用import,你会遭遇什么
写Python时不用import,你会遭遇什么
41 2
|
8月前
|
XML 数据格式 Python
Python的`import`用于加载模块,基础形式是`import module`,全量导入
【6月更文挑战第23天】Python的`import`用于加载模块,基础形式是`import module`,全量导入;`from module import name`选择性导入部分,减少命名空间污染;`from module import *`导入所有(不推荐),易引发冲突。别名导入如`from math import sqrt as square_root`可避免冲突。包导入用`.`,如`import xml.etree.ElementTree as ET`。
86 8
|
8月前
|
XML 数据格式 Python
在Python中,导入其他模块是通过使用import语句完成的
在Python中导入模块涉及`import`语句的不同用法:1) `import math`导入整个标准库;2) `from math import sqrt`导入单个函数;3) `import numpy as np`使用别名;4) `from random import *`导入所有(不推荐);5) `import xml.etree.ElementTree as ET`导入子模块;6) 使用`importlib.import_module()`延迟导入;7) `from .module import func`导入相对路径模块,需管理`sys.path`。
115 6
|
8月前
|
XML 数据格式 Python
Python模块导入包括:`import math`导入标准库
【6月更文挑战第23天】Python模块导入包括:`import math`导入标准库,`from math import sqrt`导入单个函数,`import numpy as np`给模块取别名,`from random import *`导入所有(不推荐),`import xml.etree.ElementTree as ET`导入子模块,`import_module('pandas')`按需导入,和使用相对路径如`from .module import func`处理项目结构。记得调整`sys.path`以包含自定义模块路径。
135 4
|
8月前
|
Python 容器
GitHub狂揽6700 Star,Python进阶必备的案例、技巧与工程实践
当下是 Python 急剧发展的时代,越来越多的人开始学习和使用Pyhon,而大家也遇到了各种问题。这份手册清晰、细致地介绍了 Python 代码应该遵循的编程风格,并解释了背后的原理和机制。
|
7月前
|
Python
【Python】已解决:(from docx import Document导包报错)ModuleNotFoundError: No module named ‘exceptions’
【Python】已解决:(from docx import Document导包报错)ModuleNotFoundError: No module named ‘exceptions’
465 0

热门文章

最新文章

推荐镜像

更多