writing……
前言
参考信息
https://www.jianshu.com/p/19f1e564a29d
https://www.jianshu.com/p/00abb504e137
https://blog.csdn.net/winycg/article/details/80025432
https://www.cnblogs.com/potato-chip/p/9106225.html 《setup参数详解》
https://www.cnblogs.com/cposture/p/9029023.html 《Python 包构建教程》
基础概念
module
pure python module
python模块。python编写,一个module对应的就是一个.py
文件。extension module
扩展模块。用底层语言编写的,如c/c++,java等。package
包。有__init__.py
文件的文件夹,改文件夹内所有module的集合。- 有
__init__.py
的目录表示包,没有则表示普通目录。
__all__
可以指定批量引入。在.py
文件,如果不声明__all__
,则模块中所有的变量和函数均可以使用。如果使用了__all__
及from module import *
的组合,则只能部分可见。
私有变量/方法
from xxx import *
不能导入或使用私有变量及方法。(以单下划线或双下划线为前缀)import xxx
能导入或使用私有变量及方法。
# module.py
__all__ = ['a']
a = 1
b = 2
def f():
print("hello")
import module
a # 可见
b # 可见
f() # 可见
from module import *
a # 可见
b # 不可见
f() # 不可见
目录结构
setup
在顶层目录需要有一个setup.py
文件,用来编辑package的基础信息,
setup.py参数(常用的)
- Name:打包文件的名称。
- version:版本号。
- author:作者。
- author_email:联络邮箱。
- license:开源协议类型。
- package:打包的文件夹。如文件夹a有子文件夹b,则以
a.b
表示。 - install_requires:需要安装的依赖包。
示例
安装/发布
PyPi
打包及安装
工具包
- setuptools
- wheel
压缩包格式
python setup.py sdist
或python setup.py bdist
,将所有内容打包,放于dist目录下。
whl格式
pip wheel --wheel-dir=输出目录 打包目录
,如pip wheel --wheel-dir=./dist ./
表示将当前目录打包并输出至dist目录。
或者python setup.py bdist_wheel
,生成build,dist,egg-info目录,whl在dist目录里。
安装whl
pip install xxxx.whl