目录
一. 问题
最近在整理之前的代码,发现好多都杂乱无章的;
软件模块代码重用(复用)是个好东西;
为何 python 不能像 Java 那种写一个 组件/包,然后发布到 Maven 仓库当中去呢?
后来去官网上,折腾了折腾,找了找,还真有,顺便摘抄记录一下;
作为一个流行的开源开发项目,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
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 就是这类工具之中,市场份额最大的一个。
官方文档,请参考:
2.3 扩展相关
2.3.1 YAML
Travis CI 脚本编写语言采用 YAML 格式,需要了解各个语法写法和习惯;
官方文档,请参考:
- https://yaml.org/
- https://yaml.org/spec/1.2/spec.html
- https://pyyaml.org/
- 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 和setuptools 安装 到创建的虚拟环境中。

这篇博客详细介绍了Python模块的安装与分发过程,包括Python Packaging Index、setuptools、wheel、twine和tox等工具的使用,以及Travis CI的介绍。此外,还涵盖了工程结构、配置、测试、构建和分发的具体步骤,指导读者如何在Python生态系统中有效地管理和发布软件包。

9144

被折叠的 条评论
为什么被折叠?



