目录

打包

在本节中,您将

  • 将您的模块放在一个可安装的包中。
  • 使用版本控制。
  • 安装和使用该包。

有关打包的更多信息,请参阅我们的 打包指南

创建最小的可安装 Python 包

让我们创建一个包含此函数的 Python 包。

首先,为您的软件包创建一个新目录,名为 example,并进入该目录

mkdir example
cd example

您应该立即在此目录中初始化一个空的 Git 存储库;如果您需要复习如何使用 Git 进行版本控制,请查看 Software Carpentry 的课程 使用 Git 进行版本控制。您应该在后续操作中定期提交更改。本教程在此之后不会明确提醒您提交工作。

git init

在包目录 example 中,为源代码创建子目录 src(“源”)和 src/example

mkdir src
mkdir src/example

src/example/__init__.py 中创建一个文件。这就是将目录识别为 Python 中的“包”的内容。它可以保持为空。

touch src/example/__init__.py

refraction.py(我们上一节中的代码)放在它旁边,位于 src/example/refraction.py

您的包所需的最后一个元素是 pyproject.toml 文件,放置在根目录中。

touch pyproject.toml

填写最少需要的元数据,包括包名、版本和一些与如何安装它相关的选项,您可以照原样复制。

# contents of pyproject.toml
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "example"
version = "0.1.0"

此处给出的包名 example 与包含我们项目代码的目录包匹配。我们选择 0.1.0 作为此包的起始版本;您将在后面的部分中看到更多关于版本控制的信息,以及如何在不手动在此处编写版本号的情况下指定版本号。

此时,您的包的文件结构将如下所示

.
├── pyproject.toml
├── src
│   └── example
│       ├── __init__.py
│       └── refraction.py

安装和使用您的包

现在您的包具有必要的元素,您可以将其安装到您的虚拟环境中(该环境应该已经处于活动状态)。从项目的顶层目录中,输入

pip install -e .

-e 标志告诉 pip 以可编辑模式安装,这意味着您可以在测试时继续在计算机上开发您的包,而无需每次都重新安装它。

然后,在 Python shell 或 Jupyter Notebook 中,导入您的包并调用该函数。

>>> from example.refraction import snell
>>> import numpy as np
>>> snell(np.pi / 4, 1.00, 1.33)
1.2239576240104186

可以使用 help() 查看文档字符串。

>>> help(snell)

或者,在 Jupyter 或 Python 中,使用 ? 作为快捷方式。

In [1]: snell?

有关打包的更多信息,还可以参阅我们的 打包指南