目录

Python打包工具distutils的使用

目录

Python打包工具distutils的使用

本篇博客介绍的是使用distutils + 打包发布自定义的python包。

假设python工程目录结构如下,

https://i-blog.csdnimg.cn/blog_migrate/18d013d3279cb587b203e179322d2067.png

一个比较简单的需求:

在打包时,我们希望

  • 对于一些pkg,全部打包(所有py文件),对于其他pkg,部分打包。
  • 打包pkg里的配置文件
  • 打包不属于任何pkg的模块(单个py脚本)

为了满足上述需求, 脚本编写如下:

from distutils.core import setup
setup(
package_dir={'':'python'},
packages=['pkg1'],
package_data={'': ['config/1.txt']},
py_modules=['pkg2.p21','test1']
)

为了简单起见, 省略了对待生成包名字/版本等描述。

解释:

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的脚本( ),此时用py_modules就比较方便。

打包:

python setup.py bdist (这里有多种参数可选择)

打包结果 :会生成一个build和dist目录。

https://i-blog.csdnimg.cn/blog_migrate/7aeb4bfa9f84d79978dfa3639f7d86ab.png

本机安装测试

可以用 sudo python install –record installed.txt 在本机安装验证,

加 –record installed.txt 是为了记录安装路径,方便验证完删除。

安装后,可以去python系统目录下验证是否安装成功。

https://i-blog.csdnimg.cn/blog_migrate/7b7eb6674a6463e0365074f18266cb32.png

开启一个终端,测试安装成功。

https://i-blog.csdnimg.cn/blog_migrate/e5e2b7db4164cac145edddf98cef8db4.png

参考

How to writing the setup script :