2020-02-24python高手之路学习随笔(6)

第六章 分发

利用工具生成自己的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

你可能感兴趣的:(2020-02-24python高手之路学习随笔(6))