如何建立一个完美的 Python 项目 | 干货
发布日期:2021-04-30 21:10:36
浏览次数:105
分类:精选文章
本文共 2159 字,大约阅读时间需要 7 分钟。
Python 开发最佳实践指南
在开始一个新的 Python 项目时,选择优秀的库和工具至关重要。这些工具能够帮助您节省大量时间,并提升开发效率。以下是为您的项目建立高质量开发环境的步骤指南。
1. 安装开发工具
首先,安装必要的开发工具。我们将使用以下工具:
- Pipenv:管理项目依赖和虚拟环境。
- Black:自动代码格式化工具。
- Isort:管理导入部分。
- Flake8:代码风格检查工具。
- Mypy:静态类型检查器。
- Pytest:测试框架。
- Pytest-cov:测试覆盖率统计工具。
- pre-commit:Git 预提交钩工具。
安装命令
pipx install pipenv black isort flake8 mypy pytest pytest-cov --dev
2. 配置项目
创建一个新目录并初始化项目:
mkdir projectcd projectpipenv install --dev
配置 setup.cfg
在项目根目录下创建 setup.cfg 文件:
[requires]python = ">=3.8"[tool:pytest]testpaths = test/[isort]multi_line_output=3include_trailing_comma=Trueforce_grid_wrap=0use_parentheses=Trueline_length=88[flake8]ignore = E203, E266, E501, W503max-line-length = 88max-complexity = 18select = B, C, E, F, W, T, R
3. 配置 Git 预提交钩
在 .pre-commit-config.yaml 文件中添加以下内容:
repos: - repo: local hooks: - id: isort name: Isort stages: [commit] entry: pipenv run isort types: [python] - id: black name: Black stages: [commit] entry: pipenv run black types: [python] - id: flake8 name: Flake8 stages: [commit] entry: pipenv run flake8 types: [python] exclude: setup.py - id: mypy name: Mypy stages: [commit] entry: pipenv run mypy types: [python] pass_filenames: false - id: pytest name: Pytest stages: [commit] entry: pipenv run pytest types: [python] - id: pytest-cov name: Pytest stages: [push] entry: pipenv run pytest --cov --cov-fail-under=100 types: [python] pass_filenames: false
4. 使用 Cookiecutter 生成项目
通过 Cookiecutter 模板,您可以快速生成一个包含所有配置和工具的项目:
pipx run cookiecutter gh:sourcery-ai/python-best-practices-cookiecutter
填写项目名称和仓库名称,Cookiecutter 将为您生成一个完整的项目模板。
5. 集成到编辑器
为了实时反馈,您可以将这些工具集成到您的编辑器中:
- Vim:使用
ale插件运行 Flake8、Black、Isort 和 Mypy。 - VS Code:通过扩展运行这些工具。
6. 提交代码
每次提交前,pre-commit 钩将自动运行所有检查工具,确保代码质量。
git commit -m "提交说明"
7. 测试
确保每次提交都有足够的测试覆盖率:
pipenv run pytest --cov --cov-fail-under=100
8. 持续集成
配置 CI 工具(如 GitHub Actions)运行自动化测试和覆盖率检查。
通过以上步骤,您可以建立一个高质量、高效率的开发环境,确保代码的可读性、可维护性和质量。
发表评论
最新留言
感谢大佬
[***.8.128.20]2026年06月08日 03时33分28秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP二维数组转换为一维数组
2023-03-01
PHP二维数组重组
2023-03-01
PHP交换两个变量值
2023-03-01
php代码执行完整流程介绍
2023-03-01
PHP代码格式化工具phpcf常见问题解决方案
2023-03-01
PHP使用3DES算法加密解密字符串
2023-03-01
php使用memcached扩展的一个BUG
2023-03-01
PHP内核介绍及扩展开发指南—基础知识
2023-03-01
PHP写日志fwrite和file_put_contents的区别与性能
2023-03-01
PHP函数
2023-03-01
PHP函数__autoload失效原因(与smarty有关)
2023-03-01
PHP函数操作数字和汉字互转(100以内)
2023-03-01
PHP函数方法
2023-03-01
PHP删除指定目录下的所有文件和文件夹 | 删除指定文件
2023-03-01
php判断ip黑名单程序代码
2023-03-01
php判断复选框是否被选中的方法
2023-03-01
PHP判断指定目录下是否存在文件
2023-03-01
php判断数组是否为空
2023-03-01
PHP判断数组是否有重复值、获取重复值
2023-03-01