【Python】安装与分发模块

 

目录

一. 问题

二. 知识储备

2.1 Python 相关

2.1.1 Python Packaging Index

2.1.2 setuptools

2.1.3 wheel

2.1.4 twine

2.1.5 tox

2.2 辅助相关

2.2.1 Tracis CI

2.3 扩展相关

2.3.1 YAML

三. 工程结构

四. 安装

五. 配置

5.1 pyproject.toml

5.2 MANIFEST.in

5.3 tox.ini

5.4 setup.cfg

5.5 README.md

六. 测试

七. 构建

7.1 build tar.gz 方式

7.2 build whl 方式

八. 分发(发布)

8.1 注册账号

8.2 检查软件包

8.3 上传软件包

五. 参考


 

一. 问题

最近在整理之前的代码,发现好多都杂乱无章的;

软件模块代码重用(复用)是个好东西;

为何 python 不能像 Java 那种写一个 组件/包,然后发布到 Maven 仓库当中去呢?

后来去官网上,折腾了折腾,找了找,还真有,顺便摘抄记录一下;

 

作为一个流行的开源开发项目,Python拥有一个活跃的贡献者和用户支持社区,这些社区也可以让他们的软件可供其他Python开发人员在开源许可条款下使用。

这允许Python用户有效地共享和协作,从其他人已经创建的解决方案中受益于常见(有时甚至是罕见的)问题,以及可以提供他们自己的解决方案。

本指南涵盖了分发部分的流程。有关安装其他Python项目的指南,请参阅 安装指南分发(发布)指南

 

二. 知识储备

 

在世界上大多数地方,软件自动受版权保护。这意味着其他开发人员需要明确的权限来复制,使用,修改和重新分发软件。

开源许可是一种以相对一致的方式明确授予此类权限的方式,允许开发人员通过为各种问题免费提供通用解决方案来有效地共享和协作。这使得许多开发人员可以将更多时间用于关注他们特定情况相对独特的问题。

Python提供的分发工具旨在使开发人员选择开源时,可以合理地直接将其自己的贡献回馈到该公共软件池。

无论该软件是否作为开源软件发布,相同的分发工具也可用于在组织内分发软件。

 

2.1 Python 相关

2.1.1 Python Packaging Index

Python Packaging Index 是一个开源许可的软件包公共存储库,可供所有 Python 用户使用。

 

2.1.2 setuptools

setuptools (在很大程序上)是作为 distutils 的取代者,于 2004 年首次发布。它对未经修改的 distutils 工具最重要的补充是能够声明对其他包的依赖。目前它被推荐用来替代 distutils,其更新更为频繁,在更为多样的 Python 版本之上为最新的包标准提供持续支持。

 

2.1.3 wheel

wheel (在此上下文中)是一个将 bdist_wheel 命令添加到 distutils/setuptools 的项目。这产生了一个跨平台的二进制打包格式(称为“轮子”或“轮子文件”,并在 PEP 427 中定义),它允许在系统上安装Python库,甚至包括二进制扩展的库,而不需在本地进行构建。

 

2.1.4 twine

使用它来将项目发行版上传到PyPI

 

2.1.5 tox

tox 旨在自动化和标准化Python中的测试。它是简化Python软件的打包,测试和发布过程的更大愿景的一部分。

tox 是通用的virtualenv 管理和测试命令行工具,可用于:

  • 检查您的软件包是否使用不同的Python版本和解释器正确安装;

  • 在每个环境中运行测试,配置您选择的测试工具;

  • 作为持续集成服务器的前端,大大减少了样板文件,并将基于CI 和shell 的测试合并在一起;

需要使用如下命令安装:

# python2
$ python2 -m pip install tox

# python3
$ python3 -m pip install tox

2.2 辅助相关

2.2.1 Tracis CI

最近看到的好多 Github 项目都包含一个.travis.yml 文件,这是用来干啥的呢?

编写代码只是软件开发的一小部分,更多的时间往往花在构建(build)和测试(test)。为了提高软件开发的效率,构建和测试的自动化工具层出不穷。Travis CI 就是这类工具之中,市场份额最大的一个。

官方文档,请参考:

  1. https://www.travis-ci.com/
  2. https://docs.travis-ci.com/

 

2.3 扩展相关

2.3.1 YAML

Travis CI 脚本编写语言采用 YAML 格式,需要了解各个语法写法和习惯;

官方文档,请参考:

  1. https://yaml.org/
  2. https://yaml.org/spec/1.2/spec.html
  3. https://pyyaml.org/
  4. https://yaml.readthedocs.io/en/latest/

 

本文档假设都是在 virtualenv 环境下,进行安装与分发操作;

 

三. 工程结构

项目工程结构,举例如下:

# soft package tree

--- project root
    |
    | --- .tox
    | --- .vscode
    | --- build
    | --- dist
    | --- doc
        --- ...
            --- README.md
    | --- src
        --- com
            --- dvsnier
                --- ...
    | --- test
        --- com
            --- dvsnier
                --- ...
    | --- venv
    | --- venv2
    | --- .editorconfig
    | --- .gitignore
    | --- LICENSE.txt
    | --- MANIFEST.in
    | --- pyproject.toml
    | --- README.md
    | --- setup.cfg
    | --- tox.ini

具体细节可参考,  Python-Demo 项目;

 

四. 安装

默认情况下可能未安装 pip,一种可选解决方案是:

# POSIX python2
python2 -m ensurepip --default-pip

# POSIX python3
python3 -m ensurepip --default-pip



# windows python2
python2 -m ensurepip --default-pip --user

# windows python3
python3 -m ensurepip --default-pip --user

还有其他资源可用来 安装 pip

pip 是首选的安装程序。从Python2.7.9开始,默认情况下Python二进制安装程序中包含了它。

 

virtualenv 是一个半隔离的Python环境,它允许安装包供特定应用程序使用,而不是安装在系统范围内;

virtualenv 是用于创建虚拟环境的第三方工具,它默认将pip安装到所有创建的虚拟环境中。

 

当前,有两种用于创建Python 虚拟环境的常用工具:

  • venv 在Python 3.3和更高版本中默认可用,并在Python 3.4和更高版本中将pip 和

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值