如何打包你的 Python 代码

使用 setuptools 来向用户交付 Python 代码。

使用 setuptools 来向用户交付 Python 代码。

如何打包你的 Python 代码

你花了几周的时间来完善你的代码。你已经对它进行了测试,并把它发送给一些亲近的开发者朋友以保证质量。你已经将所有的源代码发布在 你的个人 Git 服务器 上,并且从一些勇敢的早期使用者收到了一些有用的错误报告。现在你已经准备好将你的 Python 代码提供给全世界。

就在这时你遇到一个问题。你不知道如何交付产品。

将代码交付给它的目标用户是一件大事。这是软件开发的一个完整的分支,是 CI/CD 中的 “D”,但很多人都忘记了,至少到最后才知道。我写过关于 AutotoolsCmake 的文章,但有些语言有自己的方法来帮助你将你的代码提供给用户。对于 Python 来说,向用户提供代码的一个常见方法是使用 setuptools

安装 setuptools

安装和更新 setuptools 的最简单方法是使用 pip

“`
$ sudo python -m pip install –upgrade setuptools

“`

示例库

我创建了一个简单的 Python 库,名为 myhellolib,来作为需要打包的示例代码。这个库接受一个字符串,然后用大写字母打印出这个字符串。

它只有两行代码,但项目结构很重要,所以首先创建目录树:

“`
$ mkdir -p myhellolib.git/myhellolib

“`

为了确认这个项目是一个可导入的库(即 Python “模块”),在代码目录中创建一个空文件 __init__.py,同时创建一个包含代码的文件:

“`
$ touch myhellolib.git/myhellolib/init.py
$ touch myhellolib.git/myhellolib/myhellolib.py

“`

myhellolib.py 文件中,输入简单的 Python 代码:

“`
def greeter(s):
print(s.upper())

“`

这就是写好的库。

测试它

在打包之前,测试一下你的库。创建一个 myhellolib.git/test.py 文件并输入以下代码:

“`
import myhellolib.myhellolib as hello
hello.greeter(“Hello Opensource.com.”)

“`

运行该脚本:

“`
$ cd myhellolib.git
$ python ./test.py
HELLO OPENSOURCE.COM

“`

它可以工作,所以现在你可以把它打包了。

Setuptools

要用 setuptools 打包一个项目,你必须创建一个 .toml 文件,将 setuptools 作为构建系统。将这段文字放在项目目录下的 myhellolib.toml 文件中。

“`
[build-system]
requires = [“setuptools”, “wheel”]
build-backend = “setuptools.build_meta”

“`

接下来,创建一个名为 setup.py 的文件,包含项目的元数据:

“`
from setuptools import setup

setup(
name=’myhellolib’,
version=’0.0.1′,
packages=[‘myhellolib’],
installrequires=[
‘requests’,
‘importlib; python
version == “3.8”‘,
],
)

“`

不管你信不信,这就是 setuptools 需要的所有设置。你的项目已经可以进行打包。

打包 Python

要创建你的 Python 包,你需要一个构建器。一个常见的工具是 build,你可以用 pip 安装它:

“`
$ python -m pip install build –user

“`

构建你的项目:

“`
$ python -m build

“`

过了一会儿,构建完成了,在你的项目文件夹中出现了一个新的目录,叫做 dist。这个文件夹包含一个 .tar.gz 和一个 .whl 文件。

这是你的第一个 Python 包! 下面是包的内容:

“`
$ tar –list –file dist/myhellolib-0.0.1.tar.gz
myhellolib-0.0.1/
myhellolib-0.0.1/PKG-INFO
myhellolib-0.0.1/myhellolib/
myhellolib-0.0.1/myhellolib/init.py
myhellolib-0.0.1/myhellolib/myhellolib.py
myhellolib-0.0.1/myhellolib.egg-info/
myhellolib-0.0.1/myhellolib.egg-info/PKG-INFO
myhellolib-0.0.1/myhellolib.egg-info/SOURCES.txt
myhellolib-0.0.1/myhellolib.egg-info/dependencylinks.txt
myhellolib-0.0.1/myhellolib.egg-info/requires.txt
myhellolib-0.0.1/myhellolib.egg-info/top
level.txt
myhellolib-0.0.1/setup.cfg
myhellolib-0.0.1/setup.py

$ unzip -l dist/myhellolib-0.0.1-py3-none-any.whl
Archive: dist/myhellolib-0.0.1-py3-none-any.whl
Name

via: https://opensource.com/article/21/11/packaging-python-setuptools

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

主题测试文章,只做测试使用。发布者:eason,转转请注明出处:https://aicodev.cn/2021/11/18/%e5%a6%82%e4%bd%95%e6%89%93%e5%8c%85%e4%bd%a0%e7%9a%84-python-%e4%bb%a3%e7%a0%81/

Like (0)
eason的头像eason
Previous 2021年11月17日
Next 2021年11月18日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信