Hatch,一个超级管家 Python 库

大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。

一个简单的库,也许能够开启我们的智慧之门,
一个普通的方法,也许能在危急时刻挽救我们于水深火热,
一个新颖的思维方式,也许能激发我们无尽的创造力,
一个独特的技巧,也许能成为我们的隐形盾牌……


神奇的 Python 库之旅,第 12

一、初识 Hatch

Hatch 是一个现代化的 Python 项目管理工具,旨在简化和优化项目的构建、发布和环境管理。它集成了虚拟环境管理、项目初始化、依赖管理等功能,让你可以专注于编码,而不是浪费时间在繁琐的配置上。

为什么选择 Hatch?

  • 一站式解决方案:从项目创建到发布,Hatch 一站式搞定。
  • 简单易用:友好的 CLI 界面,轻松上手。
  • 强大的依赖管理:支持多环境、多版本的依赖管理。
  • 高度可配置:灵活的配置文件,满足各种需求。

听起来不错吧?接下来,让我们一起安装并配置 Hatch,开启我们的快乐之旅!

Github 项目地址:

https://github.com/pypa/hatch

二、安装与配置

安装 Hatch
Hatch 的安装非常简单,只需要一行命令:

pip install hatch

初始化项目
安装完成后,我们可以使用 Hatch 初始化一个新的 Python 项目:

hatch new my_project

这条命令会创建一个名为 my_project 的新项目,并生成基础的目录结构和配置文件。

项目结构
Hatch 初始化的项目结构如下:’

my_project/
├── src/
│   └── my_project/
│       └── __init__.py
├── tests/
│   └── test_my_project.py
├── hatch.toml
└── README.md

配置文件
项目的核心配置文件是 hatch.toml。让我们来看一下这个文件的内容:

[project]
name = "my_project"
version = "0.1.0"
description = "A new Python project"
authors = ["Your Name <your.email@example.com>"]
readme = "README.md"
license = "MIT"

[tool.hatch.metadata]
requires-python = ">=3.6"

hatch.toml 文件定义了项目的基本信息和依赖配置。你可以根据需要进行修改和扩展。

三、虚拟环境管理

创建虚拟环境
Hatch 提供了强大的虚拟环境管理功能,让我们先来创建一个虚拟环境:

hatch env create

这条命令会在项目目录中创建一个新的虚拟环境,并安装项目所需的依赖。

激活虚拟环境
创建好虚拟环境后,我们需要激活它:

hatch shell

激活后,你就可以在这个虚拟环境中进行开发和测试了。

管理依赖
在 hatch.toml 文件中,我们可以指定项目的依赖:

[project]
dependencies = [
    "requests",
    "numpy"
]

然后使用以下命令安装依赖:

hatch env sync

Hatch 会自动解析并安装所有的依赖,让你无需手动管理。

四、项目构建与发布

构建项目
构建项目只需要一条简单的命令:

hatch build

这条命令会生成项目的分发包,通常是一个 tar.gz 文件和一个 whl 文件,保存在 dist/ 目录下。

发布项目
Hatch 支持将项目发布到 PyPI,只需要进行简单的配置和命令操作:

[tool.hatch.publish]
repository = "pypi"
username = "your_username"
password = "your_password"

配置完成后,使用以下命令发布项目:

hatch publish

五、Hatch 的高级功能

多环境支持
Hatch 支持在同一个项目中管理多个虚拟环境,非常适合需要测试不同 Python 版本或依赖版本的情况:

[tool.hatch.envs]
python3.8 = { python = "python3.8" }
python3.9 = { python = "python3.9" }

创建和激活不同环境:

hatch env create python3.8
hatch env use python3.8

插件扩展
Hatch 提供了插件机制,可以通过插件扩展其功能。你可以在 hatch.toml 文件中配置插件:

[tool.hatch.plugins]
example = { version = "1.0.0" }

然后使用命令安装插件:

hatch plugin install

六、实战案例

自动化测试
让我们通过 Hatch 实现自动化测试。首先,在 hatch.toml 文件中添加测试依赖:

[project]
dependencies = [
    "pytest"
]

然后创建一个简单的测试文件 tests/test_example.py:

def test_example():
    assert 1 + 1 == 2

使用以下命令运行测试:

hatch run pytest

多版本兼容性测试
为了确保项目兼容多个 Python 版本,我们可以使用 Hatch 的多环境支持进行测试:

[tool.hatch.envs]
python3.8 = { python = "python3.8" }
python3.9 = { python = "python3.9" }

创建环境并运行测试:

hatch env create python3.8
hatch env create python3.9

hatch run python3.8 pytest
hatch run python3.9 pytest

更多功能、详细功能可参考官方文档:

https://hatch.pypa.io/latest

七、结语

今天我们一同探索了 Hatch 这个神奇的 Python 项目管理工具。从基本安装配置到高级功能应用,相信你已经对它有了全面的了解和掌握。Hatch 不仅让项目管理变得简单高效,还让编码过程更加愉快。

希望你能将这些知识应用到实际项目中,提升工作效率,享受编码的乐趣。编程不仅是一种技能,更是一门艺术。愿你在编码的世界里不断探索,成为一个真正的“代码艺术家”!

在这里插入图片描述

八、作者Info

Author:小鸿的摸鱼日常

Goal:让编程更有趣! 专注于 Web 开发、爬虫,游戏开发,数据分析、自然语言处理,AI 等,期待你的关注,让我们一起成长、一起Coding!

版权说明:本文禁止抄袭、转载,侵权必究!

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以按照以下步骤使用Python中的matplotlib绘制桑基图: 1. 安装matplotlib:在命令行中输入 `pip install matplotlib` 安装matplotlib。 2. 准备数据:准备起点和终点数据,并将其存储在DataFrame中。 3. 导入matplotlib:在Python脚本中导入matplotlib。 4. 绘制桑基图:使用matplotlib中的 `sankey()` 函数绘制桑基图。需要传入起点和终点数据。 5. 自定义桑基图:可以使用不同的颜色、标签和注释等自定义桑基图。可以通过 `patche` 对象来访问桑基图的不同部分,并进行自定义。 以下是一个使用Python中的matplotlib绘制桑基图的示例代码: ```python import matplotlib.pyplot as plt from matplotlib.sankey import Sankey import pandas as pd # 准备数据 df = pd.DataFrame({'start': ['A', 'A', 'B', 'B'], 'end': ['B', 'C', 'C', 'D'], 'value': [20, 30, 40, 10]}) # 绘制桑基图 fig = plt.figure() ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[], title="Sankey Diagram") sankey = Sankey(ax=ax, scale=0.01, offset=0.2, head_angle=180) sankey.add(flows=df['value'], labels=df['start'], orientations=[0, 1, -1, 0], patchlabel="Flow", facecolor="#37c959") diagrams = sankey.finish() # 自定义桑基图 for i, diagram in enumerate(diagrams): for text in diagram.texts: text.set_fontsize(12) for patch in diagram.patches: patch.set_fc('#37c959') patch.set_ec('none') patch._label.set_fontsize(12) for idx in diagram.parts: if isinstance(idx, tuple): patch = sankey.patches[idx] patch.set_hatch('/') patch.set_fc('#8c8c8c') patch.set_ec('none') sankey.patch.set_fc('none') plt.show() ``` 这个示例代码绘制了一个简单的桑基图,你可以根据自己的需要进行修改和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炒青椒不放辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值