构建良好的软件遵循特定规则并强制执行行业标准 , 同时需要考虑:依赖关系、代码质量、工作流程、凭据 。但这些如何反映在现实代码库中呢?在这篇文章中,我将向您展示我在Python/ target=_blank class=infotextkey>Python项目中设置的4个工具,以便简化开发工作流程并强制执行一些优秀实践 。
文章插图
1. Poetry
当我开始一个新项目时,我通常使用Poetry来管理依赖关系并创建一个全新的虚拟环境 。这在不同项目依赖于相同包的不同版本时非常有用 。
Poetry是一个很好的工具,因为它在解析依赖关系方面速度很快 。它还通过用户友好的CLI易于使用,并有助于快速打包和分发您的代码 。
以下是如何使用Poetry启动新项目的方法:
poetry init
文章插图
一旦你按下yes,就会创建一个pyproject.toml文件,用于包含项目的 metadata 。这个文件可以提交到Git,并与您的同事共享,以重现相同的环境 。项目设置完成后,您可以使用add命令添加依赖项 。示例:
poetry add pandas
文章插图
您还可以分组依赖项 。例如,您可以将black和isort添加为开发依赖项到dev组 。示例:
poetry add black --group dev
文章插图
如果再次查看pyproject.toml文件 , 我们将注意到依赖项的两个单独部分:
文章插图
为什么这有用呢?
分组使您能够轻松管理不同环境的依赖关系 。例如 , 如果您有开发和测试依赖项 , 您可能希望在生产设置中安装项目库时忽略它们 。这是如何做到的:
poetry install --without dev,test
依赖项安装在哪里?
Poetry为每个项目创建一个虚拟环境 。它位于隐藏的.venv文件夹中 。您可以使用poetry shell命令激活它,并访问其特定的二进制文件(python、pip、black等) 。更多功能可以查看官方文档以了解更多信息 。
2. Pre-commit hooks
如果您是Python开发人员 , 您可能经常会遇到这样的情况:您的团队成员具有不同的编码风格,这使得代码库不一致 。结果,这导致错误,降低了生产力,并使协作困难 。pre-commit hooks就可以解决这个问题,它在每次提交之前自动运行的脚本,用于检查您的代码是否存在错误 。
在我的项目中,我通常会在我的预提交配置中添加这些脚本:
- black — 用于格式化代码
- pydoctyle — 确保代码文档符合google的标准
- pycln — 用于删除未使用的导入
- trAIling-whitespace — 用于删除额外的空格
- unitest — 用于运行单元测试和检测破坏性更改
要配置这些首先需要安装pre-commit包:
pip install pre-commit或者poetry add pre-commit
然后,您需要在名为.pre-commit-configuration.yaml的YAML文件中进行定义 。以下是我通常使用的一个:repos:-repo: https://Github.com/psf/blackrev: '23.1.0'hooks:-id: blackargs: [--config=pyproject.toml]-repo: https://github.com/pycqa/pydocstylerev: '6.3.0'hooks:-id: pydocstyleargs: ['.']-repo: https://github.com/hadialqattan/pyclnrev: 'v2.1.5'hooks:-id: pyclnargs: ['.']-repo: https://github.com/pre-commit/pre-commit-hooksrev: 'v4.4.0'hooks:-id: trailing-whitespace-repo: localhooks:-id: unittestname: run unit testslanguage: systempass_filenames: falseentry: poetry run coverage run -m pytest
现在你可以使用 install 命令进行安装:pre-commit install
另外,如果您尝试提交没有文档的代码,您将收到此错误,不会提交任何内容到git 。文章插图
这将迫使您修复代码 , 然后再次提交 。
3. Makefiles
【四个工具帮你轻松将python项目发布到生产环境】Makefile将一系列shell命令分组在一个快捷方式(也称为目标)下 。想象一下,每次更新代码时都必须运行以下单元测试命令:
推荐阅读
- 六大React开发工具
- Ai应该怎样才可以用镜像工具
- 哺乳期可以做美甲吗 哺乳期可以做美甲吗宝宝四个月
- ps一行字如何设置弧度,ps应该如何用钢笔工具画弧线
- 质量经理必懂116种质量管理工具
- 怎么调整图片大小,画图工具该咋才可以调图片的大小
- Ai应该怎样才可以用切片工具
- 姓谢的独特好听的名字四个字 姓谢的独特好听的名字
- 如何调制奶嘴鸡尾酒 如何调制奶嘴鸡尾酒
- 如何清洗发霉衣服 3种简单方法帮你快速清洗发霉衣服