python 项目工程化开发

news/2025/3/12 9:39:01/文章来源:https://www.cnblogs.com/qsxsc/p/18697175

虚拟环境工具

安装poetry

pip install -U peotry

上述方式不行时

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python

Pastedimage20230814224730
加入环境变量
Pastedimage20230814224849

初始化项目

安装cookiecutter

pip install -U cookiecutter

初始化项目

cd workspace
cookiecutter https://github.com/pyloong/cookiecutter-pythonic-project
D:\project\py_pro_guide>cookiecutter https://github.com/pyloong/cookiecutter-pythonic-project[1/12] project_name (My Project): Time Count   [2/12] project_slug (time_count):[3/12] project_description (My Awesome Project!): to count time used[4/12] author_name (Author): qrrk[5/12] author_email (qrrk@example.com): qierenrongku@qq.com[6/12] version (0.1.0):[7/12] Select python_version1 - 3.102 - 3.11Choose from [1/2] (1): 2[8/12] use_src_layout (y):[9/12] use_poetry (y):[10/12] use_docker (n):[11/12] Select ci_tools1 - none2 - Gitlab3 - GithubChoose from [1/2/3] (1):[12/12] init_skeleton (n):

会生成如下的工程目录

D:\project\py_pro_guide>tree /f
D:.
└─time_count│  .editorconfig│  .gitignore│  .pre-commit-config.yaml│  LICENSE│  pyproject.toml  # 目初始依赖,和项目的描述信息│  README.md│  tox.ini        # 任务自动化执行逻辑│├─docs│      development.md│├─src    # 放源代码│  └─time_count│          __init__.py│└─tests  # 测试目录conftest.pysettings.ymltest_version.py__init__.py

初始化项目环境

使用 poetry 初始化一个虚拟环境

D:\project\py_pro_guide>cd time_count
D:\project\py_pro_guide\time_count>poetry install -v
**C:\Users\xsc\AppData\Local\pypoetry\Cache\virtualenvs\time-count-dAro35JJ-py3.11\Scripts**

一些工具

在生成的 pyproject.toml 文件中,默认添加了一些开发环境中常用的工具。

  • isort: isort 是一个自动格式化导入工具
  • pylint: pylint 是一个检测代码风格工具
  • pytest: pytest 是一个更加易用的测试框架,兼容 unittest 测试框架
  • pytest-cov: pytest-cov 是 pytest 的 Coverage 插件,用来统计测试覆盖率
  • mkdocs: mkdocs 是一个项目文档构建工具,使用 markdown 编写内容,构建生成文档页面。
  • mkdocs-material: mkdocs-material 是基于 mkdocs 构建文档,并提供现代化主题的库。
  • tox: tox 是一个任务自动化工具

项目开发

先将项目安装到python环境中

D:\project\py_pro_guide\time_count>poetry install
Installing dependencies from lock fileNo dependencies to install or updateInstalling the current project: time_count (0.1.0)

编写代码

isort . # 在项目根目录运行 isort对导入进行格式化
isort . --check-only --diff # 此操作会自动修改代码,将导入的包格式化
pylint tests src # 项目根目录运行pylint检查代码是否规范

测试

poetry add --group dev pytest-mock

如果感觉每次运行多个命令比较繁琐,可以在项目根目录中运行 tox 自动化完成代码测试、导包检查和代码风格检查。

tox

打包发布

如果希望别人能更方便的使用项目,可以将项目打包发布到 pypi 中,然后在需要使用的地方运行

pip install -U word-count

但是安装到环境后去运行 cmdline.py 会比较麻烦,所以需要将 cmdline.py 注册成可执行命令。

修改 pyproject.toml ,增加如下内容:

[tool.poetry.plugins.console_scripts]
time_count = "time_count.cmdline:main"`

当使用 pip 命令将项目包安装到环境后,会自动注册一个 time_count 的可执行命令。

再次将本地项目以可编辑方式安装到当前 Python 环境:

poetry install`

然后就可以正常使用 time_count` 命令:

$ time_count -h 
usage: word_count [-h] -s SOURCE -d DESToptional arguments:
-h, --help show this help message and exit -s SOURCE, 
--source SOURCE Source file used for count. 
-d DEST, 
--dest DEST Dest file used for count result

运行打包命令:

poetry build`

sdist 会将项目打包成源码包, bdist_wheel 会将项目打包成编译后的二进制包。

打包后的文件在 dist 目录中。可以直接在其他地方运行 pip install word_count.wheel 安装。

发布

将开发好的项目发布到索引仓库,或内网的私有仓库。

poetry publish`

默认会将项目发布到 pypi 中,所以需要有对应的登录账号。

参考:快速上手 - Python 项目工程化开发指南 (pyloong.github.io)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/878125.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java-GUI编程-五子棋游戏

java-gui编程-五子棋小游戏 文件目录如下: 棋盘背景图如下: 运行效果如下: FiveChess类代码: package com.gui.fivechess;public class FiveChess { //主类,运行该类即可启动游戏 public static void main(String[] args) { FiveChessFrame ff = new FiveChe…

【模拟电子技术】18-多级放大电路的构成与动态分析

【模拟电子技术】18-多级放大电路的构成与动态分析 单极放大电路往往不能满足我们的需求,比如有一个电压型的信号源,其内阻还不能忽略,输出端要求输出稳定的电压,要求设计尽可能放大的放大电路。 即Ri大,R0小例如这样就可以实现,接下来看直接耦合放大电路的“进化”图(a…

AvaloniaUI 的甘特图组件.

https://github.com/xiejiang2014/XieJiang.Gantt.Avalonia Gantt chart component for AvaloniaUI(UNDER CONSTRUCTION).

快速入门 DeepSeek-R1 大模型

国内最新的神级人工智能模型已经正式发布,没错,它就是备受瞩目的DeepSeek-R1大模型。今天,我们将对DeepSeek进行一个简单的了解,并探索如何快速使用和部署这个强大的工具。值得一提的是,DeepSeek已经开源,您可以随意下载和使用它。 DeepSeek的官方网站地址如下:https://…

CompletableFuture 超时功能有大坑!使用不当直接生产事故!

CompletableFuture 超时功能有大坑!使用不当直接生产事故! 本文未经允许禁止转载! 上一篇文章《如何实现超时功能(以CompletableFuture为例)》中我们讨论了 CompletableFuture 超时功能的具体实现,从整体实现来说,JDK21前的版本有着内存泄露的bug,不过很少对实际生产有影…

2024.2.2 鲜花

P2305 [NOI2014] 购票aLIEz 決めつけばかり 自惚れを着たチープな hokori で 音荒げても 棚に隠した哀れな 恥に濡れた鏡の中 都合の傷だけひけらかして 手軽な強さで勝取る術を どれだけ磨いでも気はやつれる ふらついた思想通りだ 愛-same-CRIER 愛撫-save-LIAR Eid-聖-Risin…

昆明理工大学25考研冶金工程预计调剂145人

冶金工程考研809冶金物理化学有色冶金学有色金属冶金冶金过程及设备F002钢铁冶金学

8.数据结构

空气在他的呼吸间化作赤红烈焰,烈火在他掌中咆哮翻涌,如同猛兽般肆虐纵横,每一缕火舌都在嘶吼着征服与毁灭。他以战神的姿态掌控炽炎,以焚天煮海之势,在这场杀戮盛宴中肆意狂舞!数据结构 开题顺序: \(WHABCEI\) \(A\) CF2042D Recommendations扫描线维护 \(\le l\) 的最…

ollama mac使用

教程地址:https://www.youtube.com/watch?v=SRroLOci0CA 安装完成后,常用命令。 启动服务:ollama run deepseek-r1:8B 使用:停止服务:本文来自博客园,作者:NeverLateThanBetter,转载请注明原文链接:https://www.cnblogs.com/do-it-520/p/18697037韶华易逝,不能虚度年…

07. 文件操作

一、文件的查找我们可以使用 find 命令 从指定目录向下递归地遍历其各个子目录,将满足的文件显示在终端中。 find [搜索范围] [选项]其中,选项的可选值如下:-name 文件名:按照指定的文件名查找文件,如果不知道文件的全名,可以使用 * 进行模糊匹配。 -user 用户名:查找属…

《计算机网络》笔记——第五章 运输层

计算机网络(第7版)谢希仁目录第5章 运输层概述运输层的两个主要协议端口用户数据报协议UDPUDP的首部格式传输控制协议TCPTCP的连接可靠传输的工作原理停止等待协议连续ARQ协议TCP报文段的首部格式TCP可靠传输的实现滑动窗口超时重传时间(RTO)的选择选择确认SACKTCP的流量控制…