使用setuptools将Python代码交付给用户。您花了数周时间完善您的代码。您已经对其进行了测试并将其发送给一些亲密的开发人员朋友以进行质量保证。您已经在您的个人Git服务器上发布了所有源代码,并从一些勇敢的早期采用者那里收到了一些有用的错误报告。现在您已准备好让全世界都可以使用您的Python代码。就在那时你遇到了一个问题。你不知道如何交付产品。将代码交到目标用户手中是一件大事。这是软件开发的一个完整分支,CI/CD中的“D”,但很多人忘记了它,至少直到最后。我写过关于Autotools和Cmake的文章,但有些语言有自己的方法来帮助您让您的代码可供用户使用。对于Python来说,向用户提供代码的一种常见方式是使用setuptools。安装setuptools安装和更新setuptools最简单的方法是使用pip:$sudopython-mpipinstall--upgradesetuptoolssamplelibrary我创建了一个名为myhellolib的简单Python库作为需要打包的示例代码。该库接受一个字符串并以大写形式打印出该字符串。它只有两行代码,但项目结构很重要,所以首先创建目录树:$mkdir-pmyhellolib.git/myhellolib为了确认这个项目是一个可导入的库(即Python“模块”),创建一个空文件__init__.py,并创建一个包含代码的文件:$touchmyhellolib.git/myhellolib/__init__.py$touchmyhellolib.git/myhellolib/myhellolib.py在myhellolib.py文件中,输入简单的Python代码:defgreeter(s):print(s.upper())这是写好的库。测试它在打包之前测试您的库。创建一个myhellolib.git/test.py文件并输入以下代码:importmyhellolib.myhellolibashellohello.greeter("HelloOpensource.com.")运行脚本:$cdmyhellolib.git$python./test.pyHELLOOPENSOURCE.COM它可以工作,所以现在你可以打包它了。Setuptools要使用setuptools打包项目,您必须使用setuptools创建一个.toml文件作为构建系统。将此文本放入项目目录中的myhellolib.toml文件中。[build-system]requires=["setuptools","wheel"]build-backend="setuptools.build_meta"接下来,创建一个名为setup.py的文件,其中包含项目的元数据:fromsetuptoolsimportsetupsetup(name='myhellolib',version='0.0.1',packages=['myhellolib'],install_requires=['requests','importlib;python_version=="3.8"',],)信不信由你,这是setuptools需要的所有设置。您的项目已准备好打包。打包Python要创建Python包,您需要一个构建器。一个常用的工具是build,你可以用pip安装它:$python-mpipinstallbuild--user构建你的项目:$python-mbuild过了一会儿,构建完成并出现在你的项目文件夹中Createdanewdirectory称为区。此文件夹包含一个.tar.gz和一个.whl文件。这是您的第一个Python包!以下是包的内容:$tar--list--filedist/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-ldist/myhellolib-0.0.1-py3-none-any.whl存档: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个文件使其可用现在你知道打包你的Python包是多么容易了,你可以使用Githooks,GitLabWebhooks、Jenkins或类似的自动化工具来自动化这个过程。您甚至可以将项目上传到流行的Python模块存储库PyPi。一旦它在PyPi上,用户就可以使用pip安装它,就像在这篇文章中安装setuptools和构建一样!当您坐下来开发应用程序或库时,打包并不是您想到的第一件事,但它是编程的一个重要方面。Python开发人员对程序员如何使他们的工作对世界可用进行了大量思考,并且没有比设置工具更容易的了。尝试它,使用它,并继续使用Python编写代码!
