美文网首页程序员大数据 爬虫Python AI Sql
04-Python-包&模块-包和模块的高级操作

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

作者: 撩课学院 | 来源:发表于2018-12-05 08:08 被阅读5次

学习地址:

撩课-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="123@qq.com"
                        长描述
                            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

相关文章

网友评论

    本文标题:04-Python-包&模块-包和模块的高级操作

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