04-Python-包&模块-包和模块的高级操作

学习地址:

撩课-Python大数据+人工智能1
撩课-Python大数据+人工智能2
撩课-Python大数据+人工智能3
撩课-Python大数据+人工智能4
撩课-Python大数据+人工智能5
撩课-Python大数据+人工智能6
撩课-Python-GUI编程-PyQt5

1.包和模块的高级操作

0. 文档地址
		https://python-packaging.readthedocs.io/en/latest/minimal.html
1. 账号操作
		注册账号
			https://pypi.python.org/pypi
		邮箱验证
			https://pypi.org/manage/account/
		备注
			账号:
				oneshunzi
			密码:
				你猜

2. 环境准备

		1. setuptools安装
			https://pypi.python.org
				搜索setuptools
				下载源码文件
					
			解压后,打开命令行工具,切换当前目录为setup.py所在目录
				cd xxx目录
			在命令行中执行命令
				python setup.py install
					python3 setup.py install
		2. pip安装
			setuptools安装完毕后,会有一个安装脚本
				easy_install
			在命令行中执行
				easy_install pip
					easy_install-3.6 pip
		3. wheel安装
			在命令行中执行
				pip install wheel
					python3 -m pip install wheel
		4. twine安装
			功能作用
				一个三方包
				可以帮助我们上传库到Pypi平台
			安装方式
				pip install twine
					python3 -m pip install twine
		注意
			安装的Python版本环境问题
3. 发布前准备
		1. 创建一个项目
			项目结构
				项目名称
					包名称
						__init__.py
						模块
					模块
					setup.py
					作用
						项目信息的配置文件
						这个里面最重要的就是执行一个setup函数,通过这个函数来指明信息
					示例
						from distutils.core import setup
setup(形参1=实参1, 形参2=实参2)
						from setuptools import setup
setup(形参1=实参1, 形参2=实参2)
							建议使用
					参数说明
						名称
							name
							例:name="sz-lib"
						版本
							version
							例:version="1.0.0"
						描述信息
							description
							例:description=“this is a very niubi lib”
						需要处理的包列表
							packages
							例:packages=["szlib"]
							注意
								可以使用find_packages()
								会自动帮我们检索包(即包含__init__.py的文件夹)
						需要处理的单文件模块列表
							py_modules
							例:py_modules=["single_module"]
						作者
							author
							例:author="Sz"
						作者邮箱
							author_email
							例:author_email="[email protected]"
						长描述
							long_description
								会显示在Pypi的项目介绍中
							例:long_description="这里的字符串可以是从readme.rst文件中读取进来的"
						依赖的其他包
							install_requires
							例:install_requires=['requests>2.18']
						Python版本限制
							python_requires
							例:python_requires=“>=3”
						项目主页地址
							url
							例:url="https://github.com/wangshunzi/Python_code"
						协议
							license
							例:license="MIT"
						...
					具体setup.py脚本文档
						https://docs.python.org/2/distutils/setupscript.html
						https://packaging.python.org/tutorials/distributing-packages/
					README.rst
					概念
						rst: reStructuredText
						重新构建的文本
					作用
						可以使用特定的字符,来描述文本的格式
						Pypi平台能够自动识别long_description字段中所写的这种格式的字符串
						但是,如果把字符串都写在setup函数的参数中,会显得比较混乱,所以,一般把内容写在一个单独的README.rst文件中;
                     然后再setup.py文件中,读取这个文件内容,并赋值给long_description即可
                  文件内容编写

						具体语法文档说明
							http://zh-sphinx-doc.readthedocs.io/en/latest/contents.html
						建议
							使用Pycharm编辑,别傻的不要不要的用记事本
							Pycharm中,安装一个支持rst的插件,这样的话就能够识别rst语法
								
						案例
					语法检测
						有时候会发现,写的rst文件,无法在Pypi平台正常显示
						原因
							Pypi上对于rst的解析器问题,并不是sphinx
							导致部分语法有一些差异
						解决方案
							先从本地对long_description进行验证
							验证通过后,再进行上传
						步骤
							安装库
								pip install readme_renderer
							执行命令
								python3 setup.py check -r -s
						补充
							安装完相关库之后,也可以使用Pycharm进行验证
					注意
						使用setuptools打包时,会自动包含这个文件,不需要在下面的MANIFEST.in文件中再次声明
						反之,使用distutils打包则不会自动包含,需要在以下文件声明
					LICENSE.txt
					作用
						声明库的一些使用责任等等
						比如,所有权归属,别人是否可以对代码进行任何操作;是否可以用于其他商业用途等等
					文件内容获取地址
						https://choosealicense.com/
					MANIFEST.in
					作用
						当我们在打包一个项目的时候,并非所有的文件都会被打包在目标包中
						打包工具最终会把所有已经打包的文件生成一个叫做MANIFEST文件的列表清单
						我们就可以通过MANIFEST.in告诉打包工具,让其新增一些指定文件
					例
						include README.rst
						include LICENSE.txt
					具体官方文档
						https://docs.python.org/3/distutils/sourcedist.html#specifying-the-files-to-distribute
						包含
							include *.txt
						递归包含
							recursive-include examples *.txt *.py
						修剪
							prune examples/sample/build
				这里是真正的包和模块
				可选补充
				重点,必须有这个文件
			注意:命名建议
				全部小写
				多个单词以中划线-作为分割
					不要使用_
					pip安装对_支持不是很好
				不能和Pypi上已有的包名称重复
		2. 编译生成发布包
			在命令行工具中执行
				1. 进入setup.py同级目录
					cd xxx目录
				2. 执行
					python3 setup.py sdist
						生成源码压缩包
						它包含setup.py,模块源文件,数据文件等等
						然后可以使用在任何平台上重新编译所有内容
						--formats = 压缩格式1, 压缩格式2
							
					python3 setup.py bdist
						生成二进制发行包
						不包括setup.py
						是某个特定平台和Python版本的一个存档
					python3 setup.py bdist_egg
						生成egg包
						需要安装setuptools
					python3 setup.py bdist_wheel
						生成wheel包
						需要安装wheel
					python3 setup.py bdist_wininst
						生成windows下的安装文件
					更多命令
						python3 setup.py --help-commands
		注意
			以上生成的发布包,已经可以进行本地安装
			安装方式
				带setup.py源码压缩包
					方式1
						解压
						进入同级目录
						执行python3 setup.py install
					方式2
						pip install 压缩包
					方式3
						easy_install 压缩包
				二进制发行包
					可以解压直接拷贝到指定目录
				windows下的安装文件
					双击按步骤安装
				.egg格式
					easy_install xxx.egg
				.whl格式
					pip install xxx.whl
					easy_install xxx.whl
       	4. 发布过程
	        	1. 在命令行中,执行命令
		       	twine upload 需要发布的目标包
	       		注意
				此时会提示输入用户名和密码
					在Pypi注册过的
					需要进行邮箱验证
	        	2. 成功后
		        	Pypi网站
				
		疑问
			是否需要上传到其他几个安装源?比如豆瓣?
			不需要;啥叫镜像?如同照镜子的你,你改变了,镜子里面的内容会自动改变
			专业解释就是;镜像服务器会每隔一段时间自动和原服务器同步内容
			图示
				
		补充
			测试发布
				场景
					在发布到正式平台前,可以先发布到测试平台进行测试
					避免污染正式平台环境
				步骤
					1. 到测试平台注册账号
					2. 上传包时
						正式平台命令
							twine upload dist/xxx.whl
						测试平台命令
							twine upload --repository-url 
	5. 发布后使用
		手动下载安装
		easy_install xx
		pip install xx

你可能感兴趣的:(Python-面向对象)