2019/12/04 01-python包管理和打包分发

在这里插入图片描述
目录使用__init__.py这样一个特殊文件指代目录是一个特殊的模块,在python中只有一个类型,都是模块类型,modules,从表现形式也是分目录和普通文件,目录称为包,普通.py文件称为模块
这些写出来其实都是为了复用,把包里面的文件复制过去就可以使用了,但是这种方式在本地文件系统还行,想传递给别人就有点难了
linux有tar命令压缩,比如10个图片,压缩成1个文件,但是体积其实没怎么变,文件不是你使用多少就占多少空间,是按照扇区来的(文件元数据信息多,文件也不好刚好把扇区占满,所以都会有些浪费,成千上万就浪费很多了,比如图片服务器)所以打包成一个还是有点好处,压缩解压缩需要浪费cpu时间,省时间浪费空间,省空间浪费时间,bmp可以压缩,文本文件也可以压缩
把python打包压缩,变的小巧适合网络传输

基本上使用的第三方包都是从这里来的,Django,只要是python相关的包都在这里下载,一般都是pip instal
比如sys。path第三方包安装位置,一般在python环境lib目录下thired-packages,这是公共环境,虚拟环境就在虚拟目录里的,有15万个包

在这里插入图片描述在这里插入图片描述
这安装的是最后一种release版本
在这里插入图片描述
如果想要代码复用,就需要打包发布出去,一般都是在pypi.python,org在这里插入图片描述
很早的工具distutils,用这个来打造包
在这里插入图片描述
setuptools做了加强,新的包装格式,egg格式,就可以加一些元数据信息,egg其实就是zip文件,只不过里面包含一个特殊文件,包含这次发布的信息
在这里插入图片描述
setuptools和ditutils合并了,现在setuptools是python安装打包的标准方式,只要是python安装包都必须遵照这个标准

pip就是python安装包,支持所有的包管理,构建一个包要下载,发布,setuptools其实就是rpm打包方式,pip就是yum的整个包管理
pip是构建在setuptools,替代easy_install的。pip可以解决依赖问题(尤其是依赖版本的问题)

在这里插入图片描述
egg和wheel的区别就是,egg是一种约定,wheel是PEP,有提案的,生成.wheel格式的打包,早期安装python环境是不带pip命令的,从3.3开始集成在python安装包里了
egg和while本质上都是zip文件,egg是不成文的规定,wheel是由PEP的,定义了元数据信息也是记录在一批文件里的
甚至可以打包称rpm包
在这里插入图片描述在这里插入图片描述在这里插入图片描述
下载的包其实就是这样一个文件在这里插入图片描述
把这个包解开,由一个setup.py文件,这样执行就可以了,但是安装这个,要求你依赖自己解决,这种用起来就不方便,所以后面要提供包管理在这里插入图片描述在这里插入图片描述
这里告诉你应该这么做
在这里插入图片描述
上次的m作为打包的东西,新建一个文件setup.py
在这里插入图片描述
把内容复制进去在这里插入图片描述
把内容修改下
在这里插入图片描述在这里插入图片描述
–help来查看
在这里插入图片描述
构建的目录下创立lib目录,拷贝了__init__.py在这里插入图片描述在这里插入图片描述
把这个lib删除掉

在这里插入图片描述
重新来构建包
在这里插入图片描述在这里插入图片描述在这里插入图片描述
为了建立子包 是需要把目录建好,但是最终只把你这个包的非目录的.py文件拷贝进去,对于m这几个py文件管不了
刚才写m的时候,把m下面的__init__和m1拿走了,m2根本就没管

总结:如果指定的是一个模块(.py文件),指定的是,py文件当然会把这个文件打包进去了,如果指向包,而这个包就会把当前包里面的子模块全部打包走,对于子包根本不会打包
m.m2,就会把里面的非目录子模块打包进去

如果要把全部的结构打包,需要这么写m.m2.m21,把之前的删除
在这里插入图片描述
再次build,拷贝m,init,建立m2,m2的init进来,把m21的也拷贝进来
在这里插入图片描述虽然写了,但是也不是所有目录都需要打包发布
点setup查看其它还有什么写的

在这里插入图片描述
增加信息在这里插入图片描述
都是一些描述性信息,现在来看全是字符串
在这里插入图片描述
可以打包成什么样的东西
在这里插入图片描述
告诉你怎么去写这些信息在这里插入图片描述
源代码分发包
在这里插入图片描述
可以用这个来打包 在这里插入图片描述
指定打包格式
在这里插入图片描述
一般打包成gz,bz2比较多,建议用gz和xz
build现在是原本的样子,现在需要进行打包
在这里插入图片描述
sdist source distrution源代码的分发
在这里插入图片描述
在这里插入图片描述
dist有打包的这个文件
在这里插入图片描述
解压这个包,查看这个包的setup.py文件在这里插入图片描述
这个是会打包进去的在这里插入图片描述
这个东西就打包出来的信息在这里插入图片描述在这里插入图片描述
这就是创建一个源代码这样一个包
可以指定格式
最常用的还是 sdist

在这里插入图片描述
开于指定格式
在这里插入图片描述
可以在前后增加一下附加的脚本
在这里插入图片描述
**pypl内容 **在这里插入图片描述
可以把写好的包发布到pypl上,需要注册账号在这里插入图片描述
最简单就这么写
想发布一个模块就用py_modules

在这里插入图片描述
有两个模块就写两个在这里插入图片描述在这里插入图片描述
t.py里面写一个这个在这里插入图片描述
build和dist目录删除
在这里插入图片描述
打包一下

在这里插入图片描述
就把t.py弄进来了在这里插入图片描述
里面就有t.py了
在这里插入图片描述
这样是可以安装的,但是没人解决依赖的问题
在这里插入图片描述
把包打包进去在这里插入图片描述
一般不会写这么复杂,标准打包的东西就这么多了
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
注意查看搬了几个目录进来
在这里插入图片描述在这里插入图片描述
这样是直接打包称一个tar。gz包
在这里插入图片描述在这里插入图片描述
也可以写成这样
在这里插入图片描述
可以搭建pypl私服,发布到企业内直接使用谨慎使用python模块,小心后门
在这里插入图片描述
这是用最原始的安装不解决依赖问题
pip可以把依赖解决

在这里插入图片描述在这里插入图片描述
pip install wheel在这里插入图片描述
list of string,包名放在一个列表中=
wheel是在egg基础上,有PEP标准,这些都是在setuptools基础上发展出来的,所以需要fromsetuptools的setup支持
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
这些基础信息兼容了distributils,
在这里插入图片描述
建议写成setuptools
在这里插入图片描述
准备挪到linux下环境,egg格式少见,whl格式偶尔会有在这里插入图片描述在这里插入图片描述
成功安装 在这里插入图片描述
m在里面了在这里插入图片描述
wheel如果不支持需要pip install wheel

注意使用from setuptools import setup在这里插入图片描述
手动打包方式就需要学会setup文件如何写,从哪去找在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值