您现在的位置是:首页 >技术教程 >python工程中import要点提炼网站首页技术教程
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
这个工程中模块之间有这样的依赖关系:
-
同一个子目录之间有依赖,lib1中的 compute 中要依赖 dataload 模块
-
不同的子目录之间有依赖,lib1中的 compute 要依赖 lib2中的 model 模块
-
父目录对子目录有依赖,app 和servicecase 要依赖 lib1 中 的compute 模块
解决方式:
- 同一个子目录之间导入,compute 导入dataload 的 load 函数。使用相对导入
from .dataload import load # 在compute.py中
注意,这里需要加.
,限定在当前./lib1
目录中寻找dataload模块。
- 不同子目录之间导入,compute 导入 model 中的 model 类。将上级目录加入搜索路径后导入
import sys # 在compute.py中
sys.path.append('..')
from lib2.model import model
注意,sys.path.append
这句是将上一级目录,即./project
目录加入库搜索路径。然后问题就转化为,如何在父目录导入子目录内的类或函数,请查看下一条。
- 父目录导入子目录的类或函数,import 包名.模块 即可
from lib1.compute import compute # 在servicecase.py中
总结
主要留意解决方式中的第1,2点,相信这也是很多人能看到这里的原因。主打一个信息提炼,没有废话,就是情景展示vs解决方式。如果还不能解决你的问题,请留言讨论。
参考文档
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。