开发者

Python开发生产环境常用的4个工具(实用推荐)

开发者 https://www.devze.com 2024-01-25 09:18 出处:网络 作者: 简讯Alfred
目录Poetry这有什么用?这些依赖项安装在哪里?Pre-commit hooksMakefilespython-dotenvPoetry
目录
  • Poetry
    • 这有什么用?
    • 这些依赖项安装在哪里?
  • Pre-commit hooks
    • Makefiles
      • python-dotenv

        Poetry

        在启动一个新项目时,javascript我通常会使用 Poetry 来管理依赖关系,并创建一个全新的虚拟环境。这在不同项目依赖同一软件包的不同版本时非常有用。

        Poetry 是一款出色的工具,因为它能快速解决依赖关系问题。通过友好的 CLI,它还易于使用,并有助于快速打包和发布代码。

        我们输入 poetry init 来启动一个新项目。

        Python开发生产环境常用的4个工具(实用推荐)

        输入 "yes" 后,就会创建一个包含项目元数据的 pyproject.toml 文件。该文件可以提交到 Git,并与同事共享,以重现相同的环境。项目设置完成后,就可以使用 add 命令添加依赖关系了。

        示例:poetry add pandas

        Python开发生产环境常用的4个工具(实用推荐)

        您还可以对依赖项进行分组。

        例如,您可以将 black 和 isort 作为开发依赖项添加到 dev 组。

        示例:poetry add black --group dev

        Python开发生产环境常用的4个工具(实用推荐)

        如果我们再次查看 pyproject.toml 文件,就会发现其中有两个独立的依赖关系部分:

        Python开发生产环境常用的4个工具(实用推荐)

        这有什么用?

        有了群组,你就可以轻松管理每个环境的依赖关系。例如,如果您有开发和测试依赖项,您可能希望在生产环境中安装项目库时忽略它们。

        你可以这样使用它:

        poetry install --without dev,test

        这些依赖项安装在哪里?

        Poetry 为每个项目创建一个虚拟环境。它位于一个隐藏的 .venv 文件夹中。你可以使用&ncYLkuUbsp;poetry shell 命令激活它,并访问其特定的二进制文件(pythonpipblack 等)。

        Pre-commit hooks

        作为一名 Python 开发人员,您可能会经常遇到这样的情况:您的团队成员拥有不同的编码风格,会让代码难以阅读,导致工作效率的降低,并使协作变得困难。pre-commit 就是用来解决这个问题的。

        pre-commit 是在每次提交前自动运行的脚本,用于检查代码是否存在错误。这些 hooks 与语言无关,有助于在提交到版本库之前发现问题,确保只提交高质量的代码。

        我通常会在 pre-commit 中添加这些脚本:

        • black - 用于格式化代码

        • pydoctyle - 确保代码文档符合 Google 标准

        • pycln - 删除未使用的导入

        • trailing-whitespace - 删除多余的空格

        • unitest - 运行单元测试并发现破坏性修改

        要配置这些 pre-commit,首先需要安装 pre-commit 软件包。

        # pip 安装
        pip install pre-commit
        
        # poetry 安装
        poetry add pre-commit

        然后,你需要在名为 .pre-commit-configuration.yaml 的 YAML 文件中定义 hooks。

        下面是我通常使用的文件:

        repos:
        -   repo: https://github.com/psf/black
            rev: '23.1.0'
            hooks:
            -   id: black
                args: [--config=pyproject.toml]
        
        -   repo: https://github.com/pycqa/pydocstyle
            rev: '6.3.0'
            hooks:
            -   id: pydocstyle
                args: ['.']
        
        -   repo: https://github.com/hadialqattan/pycln
            rev: 'v2.1.5'
            hooks:
            -   id: pycln
                args: ['.']
        
        -   repo: https://github.com/pre-commit/pre-commit-hooks
            rev: 'v4.4.0'
            hooks:
            -   id: trailing-whitespace
        
        -   repo: local
            hooks:
            -   id: unittest
                name: run unit tests
                language: system
                pass_filenames: false
                entry: poetry run coverage run -m pytest

        现在,您需要使用 install 命令安装这些 hooks:

        pre-commit install

        可以开始了,让我们试试这个。如果您尝试提交文档缺失的代码,您将会收到这样的错误信息,并且什么都不会提交到 git。

        Python开发生产环境常用的4个工具(实用推荐)

        这将迫使你修复代码并再次提交。

        Makefiles

        Makefile 将一系列 shell 命令组合在一个快捷方式。我们来看一个例子。想象一下,每次更新代码时都要运行以下单元测试命令:

        poetry run coverage run -m pytest
        poetry run coverage report
        poetry run coverage html

        这些乏味且重复的工作完全可以使用 Makefile,将这三个命令集中到一个测试目标下。

        Python开发生产环境常用的4个工具(实用推荐)

        现在,不用再键入这三行,只需运行:make test。这样就避免了不必要的代码键入或记忆复杂的指令。Makefile 还有助于简化其他任务,例如:

        • 安装依赖项

        • 设置环境变量

        • 运行脚本

        • 构建和推送 docker 映像

        • 构建文档

        • 设计编程代码风格

        下面是我在一个开源项目中使用的 Makefile 实例:

        DOCKER_IMAGE := ahmedbesbes/cowriter
        VERSION := $(shell git describe --always --dirty --long)
        ifneq (,$(wildcard ./.env))
            include .env
            export
        endif
        run-cowriter: 
         @poetry run python -m src.main
        run-cowriter-job: 
         @poetry run python -m src.job
        run-web-agent: 
         @rm -rf db/ && poetry run python -m src.actions.web_searcher 
        build-imagejs:
         @docker build . -t $(DOCKER_IMAGE):$(VERSION)
        push-docker-image-to-artifact-registry:
         @gcloud builds submit --tag gcr.io/$(PROJECT_ID)/run_cowriter_job
        lint:
         @poetry run black .
        test: 
         @poetry run coverage run -m pytest
         @poetry run coverage report
         @poetry run coverage html

        Makefile 通常易于阅读和理解,可以清楚地说明项目的不同部分是如何组织的,以及它们是如何相互依赖的。这对团队新成员的入职培训或一段时间后重新审视自己的项目特别有帮助。

        python-dotenv

        作为一名 Python 开发人员,常常会涉及到敏感信息和一些凭证(例如 auth 或者 token),下面是一些例子:

        • 访问第三方服务的 API 密钥

        • 密码和凭证

        • 域名或 URL

        记住,绝不应在脚本中硬编码版本化这些凭据。因为会导致许多不安全的因素。一种安全且良好的做法是将它们加载为环境变量。

        import os
        
        api_key = os.environ.get("API_KEY")

        为了避免每次都使用 shell 命令导出环境变量,可以使用 Python 的 dotenv 软件包:

        1. pip install python-dotenv

        2. 创建一个 .env 文件,其中包含键值对中的凭据

        Python开发生产环境常用的4个工具(实用推荐)

        3. 将 .env 添加到 .gitignore 以防止 Git 提交它

        4. 使用 python-dotenv 模块将设置加载到 Python 文件中

        Python开发生产环境常用的4个工具(实用推荐)

        希望www.devze.com这些技巧对你更好地构建 Python 项目和自动化繁琐的任务有所帮助。记得收藏,并反复阅读。

        以上就是Python开发生产环境常用的4个工具(实用推荐)的详细内容,更多关于Python开发生产环境工具的资料请关注编程客栈(www.devze.com)其它相关文章!

        0

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        关注公众号