zoukankan      html  css  js  c++  java
  • Python 包的发布

    发布Python包

    上一篇介绍了如何使用别人的轮子,现在我们讨论下如何自己造轮子给别人用。

    作为一个流行的开源开发项目,Python拥有一个活跃的贡献者和用户支持社区,这些社区也可以让他们的软件可供其他Python开发人员在开源许可条款下使用。这允许Python用户有效地共享和协作,从其他人已经创建的解决方案中受益于常见(有时甚至是罕见的)问题,以及可以提供他们自己的解决方案。

    Pypi( Python Package Index) ,公共的模块存储中心

    准备

    distutils

    官方库distutils,使用安装脚本setup.py来构建,安装包。2000年停止开发

    setuptools

    它是替代distutils 的增强版工具集,包含easy_install 工具,使用ez_setup.py文件,支持egg格式的构建和安装,提供查找,下载安装构建,发布,管理等包管理功能。setuptools是包管理的核心模块。

    pip

    目前包管理的事实标准,构建在setuptools之上,替代easy_install的,同样提供丰富的包管理功能、从Python3.4 开始之间包好在安装文件中。

    wheel(轮子)

    就光这个名字都如雷贯耳!有没有~

    wheel格式定义在PEP427中wheel文件中不包含.pyc 文件提供bdist_wheel 作为seetuptools的扩展命令,这个命令可以用来生成新打包格式wheelpip 从1.4版本开始 提供了一个wheel子命令来安装wheel包,当然,需要先安装wheel模块。它可以让Python库以二进制形式安装,而不需要本地编译。

    安装

    python -m pip install setuptools wheel twine
    

    至于为什么是Python -m pip 而不是 pip 可参看我的这篇blogpython -m pip

    使用setup.py打包

    下面 是 verify-python 项目的setup.py文件。

    #!/usr/bin/env python3
    # _*_ coding: utf-8 _*_
    __author__ = "monkey"
    
    from setuptools import setup, find_packages
    
    with open("README.md", "r") as fh:
        long_description = fh.read()
    
    setup(name='verify-python',
          version='0.0.2',   # 版本号
          description='An elegant verification code generator.',  # 包的介绍
          author='BlackMonkey',  # 作者 就是我啦~ 
          author_email='3213322480@qq.com',  # 你的邮箱
          url='https://github.com/blackmonkey121/verify',  # 项目地址,一般的填git地址 也可以是任意可用的url 不过我喜欢使用 git
          packages=find_packages(),  # Python导入包的列表,我们使用find_packages() 来自动收集
          long_description=long_description,  # 项目的描述 一般是 string 上文中定义了它
          long_description_content_type="text/markdown",   # 描述文档 README 的格式 一般我喜欢MD. 也可以是你喜欢的其他格式 支不支持我就不知道了~ 估计HTML 是支持的
          license="GPLv3",   # 开源协议
    			# 这 需要去官网查,在下边提供了许可证连接 或者 你可以直接把我的粘贴走
          classifiers=[
              "Programming Language :: Python :: 3", 
              "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
              "Operating System :: OS Independent"],
    
          python_requires='>=3.3',   # Python 的版本约束
    			# 其他依赖的约束
          install_requires=[
              "itsdangerous>=1.1.0",
              "numpy>=1.11.3",
              "opencv-python>=3.4",
              "Pillow>=7.0",
              "rsa>=4.0", ]
          )
    
    

    许可证获取

    创建分发

    # 生成分发文件
    python setup.py sdist bdist_wheel
    

    如图在dist 下 存在两个文件

    verify-python-0.0.2.tar.gz   # 源码归档文件
    verify_python-0.0.2-py3-none-any.whl  # 内置的发行版文件
    

    tar.gz文件是源归档,.whl文件是 内置发行版。较新的pip版本优先安装内置发行版,但如果需要,将回落到源归档文件中。您应该始终上传源档案,并为项目兼容的平台提供内置档案。在这种情况下,我们的示例包在任何平台上都与Python兼容,因此仅需要一个内置发行版。

    *.egg-info

    应该是用来记录整个包的依赖和文件关系以及一些其他属性的东西,没有不影响包的使用,通常会在打包时生成。

    分发

    上传到Pypi 服务器上,可以是公有的Pypi服务器,也可以是公司或组织内私有的。
    如果需要上传到公有服务器,需要注册账号注册

    # 加密的上传
    python3 -m twine upload dist/*
    
  • 相关阅读:
    基于Woodstox的StAX 2 (Streaming API for XML)解析XML
    JAVA技术路线图
    richface的配置、用法介绍和注意事项
    POS与EPOS区别
    CSDN:你认为一名优秀的技术人应该具备怎样的素质?
    阶段一-03.地址,订单,支付,定时任务开发-第1章 收货地址功能开发-1-5 收货地址
    阶段一-03.地址,订单,支付,定时任务开发-第1章 收货地址功能开发-1-4 收货地址
    阶段一-03.地址,订单,支付,定时任务开发-第1章 收货地址功能开发-1-3 收货地址
    阶段一-03.地址,订单,支付,定时任务开发-第1章 收货地址功能开发-1-2 收货地址
    阶段一-03.地址,订单,支付,定时任务开发-第1章 收货地址功能开发-1-1 收货地址
  • 原文地址:https://www.cnblogs.com/monkey-code/p/13160585.html
Copyright © 2011-2022 走看看