[转载]Python 包构建教程
来源:https://www.cnblogs.com/cposture/p/9029023.html#_lab2_4_4
文章写的特别棒,我这里就不粘贴了,只列举一些重点:
基础概念
- module 模块:module 是 python 中代码重用的基本单元,一个 module 可以通过
import
语句导入到另一个 module;module 分为:pure python module
(纯 python 模块)、extension module
(扩展模块)和package
(包)- pure python module:纯 python 模块是用纯 python 语言编写的模块,单一的
.py
文件作为一个模块使用,也就是一个.py
可以称为模块了- extension module:扩展模块是用底层的 C/C++、Objective-C 或 Java 编写的模块,通常包含了一个动态链接库,比如 so、dll 或 Java,目前
distutils
只支持 C/C++ 和 Objective-C,不支持 Java 编写扩展模块;但是 python 提供了一个JCC
这样一个用于生成访问 Java 类接口的 C++ 代码的胶水模块,应该也是可以使用 Java 编写模块的。- package:包是一个带有
__init__.py
文件的文件夹,用于包含其他模块- root package:root package 是包的最顶层,它不是实质性的包,因为它不包含
__init__.py
文件。大量的标准库位于root package
,因为它们不属于一个任何更大的模块集合了。实际上,每一个sys.path
列举出来的文件夹都是root package
,你可以在这些文件夹中找到大量的模块。- distribution:模块分发,一个归档在一起的 python 模块集合,它作为一个可下载安装的资源,方便用户使用,作为开发者便需要努力创建一个易于使用的
distribution
。- distribution root:源代码树的最顶层,也就是
setup.py
所在的位置。如果 python 模块分布在不同的文件夹,最好是在该文件夹下创建一个
__init__.py
文件,以表示它是一个包使用拓展以实现调用cpp文件时,我们需要编写 setup 脚本编译我们的 cpp 文件为 so 动态链接库,并进行相应的封装