第六章 分发
利用工具生成自己的setup.py,现有的5类工具:
1 distutils是标准库的一部分,能处理简单的包的安装。
2 setuptools 领先的包安装标准,曾经被废弃但现在又继续开发。
3 distribute 从0.7版本开始并入了setiptools。
4 distutils2 (也称作packaging)已经被废弃。
5 distlib将可能会来取代distutils。
写到这里,突然感觉蛋蛋的忧伤,这本书实际上作者出发的角度,这一章,哦 ,你已经会打包了,然后说明下分包。
这就很为难我了,那就只能是我来思考,补全,让我自己能学的下去了。
setuptools,可以帮助我们创建跟分发包,作为当前情况下,应该是可行性最高的方案,作为分发库的主要选择。
那么原理是什么?通过写setup.py来把当前目录下的目录文件打成成压缩格式,用于分发。
1 tar.gz格式:这个就是标准压缩格式,里面包含了项目元数据和代码,可以使用python setup.py sdist命令生成。
2.egg格式:这个本质上也是一个压缩文件,只是扩展名换了,里面也包含了项目元数据以及源代码。这个格式由setuptools项目引入,需要安装才能运行。可以通过命令python setup.py bdist_egg命令生成。
3.whl格式:这个是Wheel包,也是一个压缩文件,只是扩展名换了,里面也包含了项目元数据和代码,还支持免安装直接运行。可以通过命令python setup.py bdist_wheel生成.
1 安装setuptools ,不过python3 以上版本已经自带这个库了
pip install setuptools
2 创建一个包
接着在该包里面创建setup.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from setuptools import setup,find_packages
setup(
name = "demo",
version = "0.1",
author="qitian",
author_email="[email protected]",
description = "make in chinese",
url = "https://www.baidu.com/",
packages = find_packages(),
)
这里如果不知道应该写什么参数,可以使用命令
python setup.py check
然后查看warning 就知道自己差了什么参数了
3 创建被分发的py包
目录 ceshiyong666
下面建立2个文件,init.py,tianzhidao.py
再tianzhidao.py里面写上
#!/usr/bin/env python
#-*- coding:utf-8 -*-
def test():
print("hello world! let‘s go’")
if __name__ == '__main__':
test()
4 运行命令生成压缩包
python setup.py bdist_egg
分别生成了3个目录:build,dist,demo.egg-info
自己查看build,demo.egg-info,确定生成物品就行
5
可以运行命令实验
安装命令 python setup.py install
接着进入环境python终端
>>> from ceshiyong666 import tianzhidao
>>> tianzhidao.test()
hello world! let‘s go
>>>
总算是写完第一节的setuptools了,par我就跳过去了,个人感觉越是依赖于高整合性的工具,个人的创造力会越低吧。
开始上传,
第一步 先注册一个账号
第二部创建文件
文件名就是“.pypirc”,创建在“C:\Users\Administrator”(所谓的根目录)。重复一次文件名就是“.pypirc”,名字+后缀名就是“.pypirc”
[distutils]
index-servers =
testpypi
[testpypi]
username =
passwors =
repository = https://testpypi.python.prg/pypi
接着打命令行
python setup.py register -r testpypi
接着有趣的一点出现了返回系统
Registering demo to https://testpypi.python.org/pypi
Server response (308): Permanent Redirect
WARNING: Registering is deprecated, use twine to upload instead (https://pypi.org/p/twine/)
!服务器倒闭了!哈哈哈哈哈哈,也不对应该说这种方式被彻底放弃了、
重新开始上传步骤
第一步先注册pypi服务器的账号密码,跟test的账号密码
https://pypi.org/account/register/
https://test.pypi.org
然后下载最新版本的twine库
pip install -U twine
测试上传到test测试服务器是否成功
python setup.py sdist bdist_wheel
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
之后可以上传到主服务器pypi
twine upload dist/*
这样为止分发基本算是结束了
结果上传成功
Uploading distributions to https://upload.pypi.org/legacy/
Enter your username: qitianbenben
Enter your password:
Uploading shijietaidaceshi-0.1-py3.7.egg
100%|████████████████████████████████████████████████████████████████
100%|████████████████████████████████████████████████████████████████
████████████████████████████| 4.57k/4.57k [00:08<00:00, 542B/s]
Uploading shijietaidaceshi-0.1.tar.gz
100%|████████████████████████████████████████████████████████████████
██████████████████████████| 3.49k/3.49k [00:01<00:00, 2.62kB/s]
View at:
https://pypi.org/project/shijietaidaceshi/0.1/
下载也成功了
(venv) C:\Users\Administrator\PycharmProjects\lianxi5>pip install shijietaidaceshi
Collecting shijietaidaceshi
Downloading https://files.pythonhosted.org/packages/a3/c0/06d97365ef281d676feda92831e46aa3e6fc22f35e50b9e472e4f25ff8ee/shijietaidac
eshi-0.1.tar.gz
Installing collected packages: shijietaidaceshi
Running setup.py install for shijietaidaceshi ... done
Successfully installed shijietaidaceshi-0.1
如果想下载测试服务器上的话,打下面命令
pip install -i https://test.pypi.org/legacy/ shijietaidaceshi
后缀为库名
400错误.这里出现了一个问题 他要我先验证这账号邮箱。。。
这里可以很清楚地看出pypi安全性为0.。。。。好无语
到此setuptools上传分发结束
附上一份par打包上传 资料
https://blog.csdn.net/u010571844/article/details/50498167
https://www.cnblogs.com/CaesarLinsa/p/pbr.html
之后再继续第六章的学习吧,有点多啊
参考资料
官网 :https://pypi.org/p/twine/
setuptools详解:https://www.jianshu.com/p/ea9973091fdf
文件的创建:https://my.oschina.net/u/3530220/blog/1608696