好的,咱们今天来聊聊 Python 打包这事儿,特别是那些带 C 扩展的复杂包。别担心,我会尽量用大白话,争取让大家听明白,搞懂怎么用 setuptools 和 distutils 把你的代码打包成一个能让别人轻松安装的宝贝。 开场白:为什么要打包? 想象一下,你辛辛苦苦写了一个 Python 库,里面用 C 优化了一些关键部分,性能嗷嗷叫。现在你想分享给你的小伙伴或者发布到 PyPI 上,让全世界的人都能用。难道你要把你的代码一股脑地扔给他们,然后说:“自己编译去吧!”? 这显然不靠谱。 打包就是为了解决这个问题。它可以把你的代码、依赖、编译好的 C 扩展等等,都打包成一个标准格式的文件(比如 .whl 或者 .tar.gz),然后别人只需要用 pip install 一下,就能轻松安装你的库,不用操心编译、依赖这些乱七八糟的事情。 distutils 和 setuptools:一对好基友 distutils 是 Python 官方提供的打包工具,历史悠久,地位崇高。但是,它功能比较简单,只能满足一些基本的打包需求。 setuptools 是一个第三方库,它在 distutils 的 …
Python `setuptools` / `distutils`:构建复杂 Python 包与 C 扩展
好的,各位观众老爷,欢迎来到今天的“Python 包裹大法:从入门到入土,C 扩展也不怕!” 讲座。我是你们的老朋友,包治百病,哦不,包罗万象的 Python 包裹师傅。 今天咱们要聊的是 Python 的 setuptools 和 distutils,这两个家伙可是 Python 包裹界的扛把子,专门负责把你的 Python 代码、C 扩展、数据文件等等,打包成一个方便快捷、人见人爱的包裹,供大家下载安装。 我知道,一开始看到 setuptools 和 distutils,很多人都会一脸懵逼:“这俩啥玩意儿?有啥区别?我该用哪个?” 别慌,听我慢慢道来。 distutils:老牌劲旅,但已显疲态 distutils 其实是 Python 的标准库自带的,相当于 Python 的“亲儿子”。它历史悠久,资格老,但是功能相对简单,很多时候不太够用。就像你家里的老式自行车,能骑,但是爬坡有点费劲,功能也比较单一。 setuptools:功能强大,社区支持广泛 setuptools 则是社区开发的,相当于 Python 的“干儿子”。它功能更强大,提供了很多高级特性,比如: 依赖管理: 可以 …