美文网首页
2020-02-24python高手之路学习随笔(6)

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

作者: 七天七念 | 来源:发表于2020-02-25 01:51 被阅读0次

    第六章 分发

    利用工具生成自己的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="xzwgm81@163.com",
        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 = <your username>
    passwors = <your password>
    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)

          本文链接:https://www.haomeiwen.com/subject/pgqyqhtx.html