IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 开发者说|Python打包发布 -> 正文阅读

[Python知识库]开发者说|Python打包发布

下面是由社区开发者——王方浩提供的文章,本文主要介绍 Python打包发布。

关于作者

王方浩,社区布道师,武汉大学电子信息专业,先后在华为和阿里从事固件、驱动、操作系统和后台相关的开发工作,目前主要从事L4级别自动驾驶的开发,喜欢研究技术,分析源码和解答问题,目前活跃于Apollo自动驾驶开源社区,平时喜欢做一些户外运动,对自动驾驶的前景担心的同时又充满激情,“莫愁前路无知己,天下谁人不识君”,希望更多的人一起!

ENJOY THE FOLLOWING  

本文将主要从以下几个方面来介绍:

  • 包(package)和模块(module)

  • 打包

  • 安装

  • 统计信息

  • 参考

概览

Python由于其灵活性和丰富的库,使用起来非常方便,在这里主要介绍Ppython的包管理机制,包括Python包的组织架构,如何打包和发布Python包,以及PIP的使用。

包和模块

Python的包是一些系列功能的合集,而模块则是单个或者几个模块,包通常的形式是

package
init.py
a.py
b.py

这里的init.py是必须的,来标识这是一个Package,之后就可以通过Import的方式引用了。

而模块(Module),可以是单个或者几个文件,通过在setup.py 中py_modules关键字来进行指定。

打包

Python通过setup.py 或setup.cfg 进行打包,打包之后的文件在Dist目录中,其中setuptools默认会添加以下几种文件:

  • all Python source files implied by the py_modules and packages setup() arguments

  • all C source files mentioned in the ext_modules or libraries setup() arguments

  • scripts specified by the scripts setup() argument

  • all files specified by the package_data and data_filessetup() arguments

  • the file specified by the license_file option in setup.cfg (setuptools 40.8.0+)

  • all files specified by the license_files option in setup.cfg (setuptools 42.0.0+)

  • all files matching the pattern test/test*.py

  • setup.py (or whatever you called your setup script)

  • setup.cfg

  • README

  • README.txt

  • README.rst (Python 3.7+ or setuptools 0.6.27+)

  • README.md (setuptools 36.4.0+)

  • pyproject.toml (setuptools 43.0.0+)

  • MANIFEST.in

如果要添加其它类型的文件,例如数据库文件,图片文件等,可以在package_data中进行添加 。

如果要添加库依赖,例如Python依赖于某个c++的So文件,可以通过Extension进行添加,在打包的时候,Python会编译其中的 .c文件,然后一起打包。

实际上由于Python是解析性语言,打包之后的文件只是拷贝并且解压到Python指定的库安装目录,由于库的路径已经加入了sys.path因此就可以调用这些库了。

命令行
如果你需要安装一个Python命令(通过命令行输入命令并且执行),setuptools提供了entry_points 来指定输入命令之后运行的函数,还可以结合argparse进行参数解析,这样就可以实现python命令安装了。

包上传
打包好的文件,要上传到PYPI网站进行托管,上传之后,其它人就可以通过pip来安装对应的软件包,并且使用了。Python官方提供了twine命令来上传包,在使用之前,首先需要注册pypi的账号,然后上传,上传之前需要输入PYPI的账号和密码。

twine upload dist/*

之后就可以在PYPI网站上看到上传的包了,还可以在PYPI网站管理。注意上传的软件包的版本不能重复上传,请节省版本号。也可以通过Github Action和PYPI结合,实现在Github上自动发布版本。

安装

Python通过pip命令来安装软件包,安装完成之后,就可以通过Import模块的方式,或者命令行的方式来使用安装包了。

pip既可以通过远程仓库安装,也可以通过本地安装,本地安装主要是用于没有网络或者测试的时候,远程安装是正式发布版本。

安装依赖
Python的安装依赖在上面说的setup.py中的install_requires进行指定,安装的时候,pip会主动下载并且安装这些依赖。

卸载
Python通过pip uninstall来卸载Python安装包,只会卸载自己,并不会卸载依赖项。

统计信息

由于pypi不提供python库的下载次数,可以通过以下网站来查询库的历史下载次数。

https://pepy.tech/

本文部分内容参考链接

  • 《Writing the Setup Script》

2. Writing the Setup Script — Python 3.10.4 documentation

  • 《Distributing a Python command line application》

Distributing a Python command line application | Jan-Philip Gehrcke

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-15 11:33:57  更:2022-05-15 11:35:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:33:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码