setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的。用户在使用setuptools创建的包时,并不需要已安装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 hellohello.greeter("Hello Opensource.com.")
运行该脚本:
$ cd myhellolib.git$ python ./test.pyHELLO OPENSOURCE.COM
它可以工作,所以现在你可以把它打包了。
Setuptools
要用 setuptools
打包一个项目,你必须创建一个 .toml
文件,将 setuptools
作为构建系统。将这段文字放在项目目录下的 myhellolib.toml
文件中。
[build-system]requires = ["setuptools", "wheel"]build-backend = "setuptools.build_meta"
接下来,创建一个名为 setup.py
的文件,包含项目的元数据:
from setuptools import setupsetup( name='myhellolib', version='0.0.1', packages=['myhellolib'], install_requires=[ '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.gzmyhellolib-0.0.1/myhellolib-0.0.1/PKG-INFOmyhellolib-0.0.1/myhellolib/myhellolib-0.0.1/myhellolib/__init__.pymyhellolib-0.0.1/myhellolib/myhellolib.pymyhellolib-0.0.1/myhellolib.egg-info/myhellolib-0.0.1/myhellolib.egg-info/PKG-INFOmyhellolib-0.0.1/myhellolib.egg-info/SOURCES.txtmyhellolib-0.0.1/myhellolib.egg-info/dependency_links.txtmyhellolib-0.0.1/myhellolib.egg-info/requires.txtmyhellolib-0.0.1/myhellolib.egg-info/top_level.txtmyhellolib-0.0.1/setup.cfgmyhellolib-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.whlName----myhellolib/__init__.pymyhellolib/myhellolib.pymyhellolib-0.0.1.dist-info/METADATAmyhellolib-0.0.1.dist-info/WHEELmyhellolib-0.0.1.dist-info/top_level.txtmyhellolib-0.0.1.dist-info/RECORD-------6 files
让它可用
现在你知道了打包你的 Python 包是多么容易,你可以使用 Git 钩子、GitLab Web 钩子、Jenkins 或类似的自动化工具来自动完成这个过程。你甚至可以把你的项目上传到 PyPi,这个流行的 Python 模块仓库。一旦它在 PyPi 上,用户就可以用 pip
来安装它,就像你在这篇文章中安装 setuptools
和 build
一样!
当你坐下来开发一个应用或库时,打包并不是你首先想到的事情,但它是编程的一个重要方面。Python 开发者在程序员如何向世界提供他们的工作方面花了很多心思,没有比 setuptools
更容易的了。试用它,使用它,并继续用 Python 编码!
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !