尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

工程实践 使用本地包开发python项目

工程实践 使用本地包开发python项目
📅 发布时间:2026/6/19 6:31:38

工程实践 使用本地包开发python项目

当python项目比较庞大, 把共用的公共函数和方法封装成一个本地包不仅便于在不同项目间复用,还能通过统一的方式读取资源文件, 是一个很好的工程实践. 下面来介绍一下这种开发方式.

我们需要把公共部分代码以一个python包的规范进行开发, 再以 edit 模式安装在本地python包的目录中. 就可以在不同的子项目中直接用import引用公共的库和方法, 公共库有更新时, 各个子项目也可以无痛的进行更新. 免去了处理相关路径, 等各种麻烦事.

公共模块的结构:

myproject/
├── mypackage/          # 包目录(必须有 __init__.py)
│   ├── __init__.py     # 包初始化文件
|   ├── resources/      # 资源文件夹
|   │   └── context.txt
│   ├── module1.py      # 模块文件
│   └── submodule/      # 子包
│       ├── __init__.py
│       └── module2.py
├── tests/              # 测试目录(可选)
│   └── test_module1.py
├── pyproject.toml      # 现代配置文件(推荐,Python 3.7+)
├── setup.py            # 传统配置文件(可选,如果无 pyproject.toml)
├── README.md           # 文档
└── LICENSE             # 许可证

myproject 是项目根目录,其中的 mypackage 是你定义的 Python 包名称。pyproject.toml 是包的配置文件 (旧版的规范是用setup.py)
一个demo pyproject.toml 是这样的:

[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"[project]
name = "mypackage"
version = "0.1.0"
description = "My development package juset a demo pkg"
authors = [{name = "UnKnown", email = "unknown@email.com"}]
dependencies = []  # 依赖列表[tool.setuptools.package-data]
mypackage = ["resources/*","resources/**/*"]  # 包含资源文件

当我们把公共代码写好后, 用 pip install -e .的方式进行edit模式的安装. 之后在各个项目目中引用就是 from mypackage import xxx. 我们也可以用统一的路径来引用公共包中的资源文件, 所用的引用方式是借助 importlib 库中的 files方法. 比如你的包名是 mypackage , 有个context.txt 放在了 resources目录下, 引用文件路径就这样写: files("mypackage.resources").joinpath("context.txt")

from mypackage import sayHi
sayHi()from importlib.resources import files
print(files("mypackage.resources").joinpath("context.txt").read_text())

在mypackage内部, 各模块之间的import要使用相对引用, 如 from .module1 import func 这是Python所推荐的开发规范. 可在规避不同环境下的迁移问题.

当需要生产部署时, 我们可以用 python -m build 来编译生成wheel包. 把打包好的 wheel 在生产环境里安装.

更多内容:
https://www.codebonobo.tech/post/40#工程实践 使用本地包开发python项目

人工智障与神经病网络 https://www.cnblogs.com/JiangOil/

相关新闻

  • 详细介绍:Python + Flask + API Gateway + Lambda + EKS 实战
  • 实用指南:【设计模式】适配器模式 在java中的应用
  • 达梦数据库查询字段类型为Date 修改为DateTime

最新新闻

  • 指纹数据集终极指南:如何免费获取和使用50+权威指纹数据库
  • 指针(4)
  • 2026年|如何高效降低论文AI检测率?三招助你轻松通过Turnitin检测
  • Transformer 发明者加入 OpenAI、创业板创历史新高、微信给 AI 发“钱包“
  • Linux Pulseaudio深度解析之pa_mainloop_get_api调用流程与实战(六十七)
  • (2026新)湘潭正规防水补漏公司口碑榜TOP5权威推荐!卫生间/厨房/阳台/屋顶/天花板/地下室渗漏水检测维修攻略-靠谱漏水检测维修师傅推荐 - 安佳防水

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号