目录使用__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文件如何写,从哪去找