本篇博客介绍的是使用distutils + setup.py 打包发布自定义的python包。
假设python工程目录结构如下,
一个比较简单的需求:
在打包时,我们希望
为了满足上述需求,setup.py 脚本编写如下:
from distutils.core import setup
setup(
package_dir={'':'python'},
packages=['pkg1'],
package_data={'': ['config/1.txt']},
py_modules=['pkg2.p21','test1']
)
为了简单起见,上述setup.py 省略了对待生成包名字/版本等描述。
解释:
1.package_dir描述了setup.py脚本与待打包pkg的路径关系: 是个字典类型,value表示以setup.py为起点的相对路径。
2 packages 是在package_dir指定路径下的python pkg(必须有__init__.py), 可以写多个。
3 package_data 填写准备打包的配置文件。
4 py_modules 填写待打包的单个脚本,比如例子中的pkg2,有时侯并不像把pkg2里的所有脚本都打包,或者有时侯需要打包不属于任何pkg的脚本(比如test1.py),此时用py_modules就比较方便。
打包:
python setup.py bdist (这里有多种参数可选择)
打包结果 :会生成一个build和dist目录。
本机安装测试
可以用 sudo python setup.py install --record installed.txt 在本机安装验证,
加 --record installed.txt 是为了记录安装路径,方便验证完删除。
安装后,可以去python系统目录下验证是否安装成功。
开启一个终端,测试安装成功。
参考
How to writing the setup script :https://docs.python.org/2/distutils/setupscript.html