python package distribution

什么是package

  • 包是一种用 点式模块名 构造python模块命名空间的方法。
  • Python只把含有__init__.py文件的目录当成包。可以在__init__.py文件中做包的初始化代码。
  • 当创建一个python package后,人们希望可以在其他地方直接import 使用。

什么是 python distribution

  • 一个python distribution 是一个包含了package的 带有版本号的压缩文件。
  • 用户可以从网络上下载,在本地通过pip install安装
  • 现在有2种基本的python 分发模式:Built DistributionSource Distribution

Source Distrution (sdist)

  • sdist 是最简单的分发模式。
  • sdist 模型是将所有的源代码打包成一个.tar.gz压缩文件,在用户的系统中执行最终的编译和安装
python3 setup.py sdist
pip3 install dist/xxx.tar.gz

Built Distribution(bdist)

  • bdist 模式更复杂,因为它实际上构建出了package。压缩文件中包含编译后的.so, .dll, .dylib等二进制文件,压缩文件名称中指定了系统信息和python版本等信息
  • WheelsEggs 是bdist 包格式。Eggs 是在2004年提出的一种格式。Wheels是在2012年提出的,用于取代egg。所以不要再使用Eggs了。
  • Eggs 和 Wheels 实际上是zip文件,Eggs 用.egg 后缀,Wheels 用.whl后缀。
  • Wheels的命名格式是:
    {dist}-{version}|-{build}|-{python}-{abi}-{platform}.whl
    
  • 用户系统不必再编译就能使用。
python3 setup.py bdist_wheel
pip3 install dist/xxx.whl

Wheel

根据 application 包含的代码类型以及其所支持的 python 版本, wheel 格式可细分为三种

  • Universal wheel: 纯 python 代码,并且支持 python 2 和 3
  • Pure python wheel: 纯 python 代码,不同时支持 python2 和 3
  • Platform wheel: 非纯 python 代码
    采用如下命令可编译成 universal wheel
python setup.py bdist_wheel --universal
running bdist_wheel
running build
installing to build/bdist.macosx-10.10-intel/wheel
......
running install_scripts
creating build/bdist.macosx-10.10-intel/wheel/packagedemo-2015.09.1.dist-info/WHEEL

$ ls dist
packagedemo-2015.09.1-py2-none-any.whl

采用如下命令可编译成非 universal wheel(即 pure python wheel 或 platform wheel):

$ python setup.py bdist_wheel
running bdist_wheel
running build
installing to build/bdist.macosx-10.10-intel/wheel
......
running install_scripts
creating build/bdist.macosx-10.10-intel/wheel/packagedemo-2015.09.1.dist-info/WHEEL

$ ls dist
packagedemo-2015.09.1-py2.py3-none-any.whl

usage

  • pip总是优先选择 wheel文件,而不是sdist文件。
python setup.py sdist bdist_wheel
可以生成sdist和bdist

参考

Python application 的打包和发布

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值