Python包和模块的分发详细介绍


Posted in Python onJune 19, 2020

发布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

Python包和模块的分发详细介绍

如图在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/*

总结

到此这篇关于Python包和模块的分发的详细介绍的文章就介绍到这了,更多相关python包和模块分发内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python是编译运行的验证方法
Jan 30 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
Feb 14 Python
python实现排序算法解析
Sep 08 Python
python3.6利用pyinstall打包py为exe的操作实例
Oct 31 Python
python实现诗歌游戏(类继承)
Feb 26 Python
实例详解Matlab 与 Python 的区别
Apr 26 Python
Opencv实现抠图背景图替换功能
May 21 Python
Python正则表达式匹配数字和小数的方法
Jul 03 Python
python对常见数据类型的遍历解析
Aug 27 Python
Python 模拟动态产生字母验证码图片功能
Dec 24 Python
Python使用socket_TCP实现小文件下载功能
Oct 09 Python
浅谈Python项目的服务器部署
Apr 25 Python
浅谈Keras中shuffle和validation_split的顺序
Jun 19 #Python
Python爬虫headers处理及网络超时问题解决方案
Jun 19 #Python
sklearn和keras的数据切分与交叉验证的实例详解
Jun 19 #Python
Python虚拟环境的创建和包下载过程分析
Jun 19 #Python
通过实例解析python创建进程常用方法
Jun 19 #Python
keras model.fit 解决validation_spilt=num 的问题
Jun 19 #Python
为什么是 Python -m
Jun 19 #Python
You might like
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
php+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
Javascript中Eval函数的使用说明
2008/10/11 Javascript
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
firefox下input type="file"的size是多大
2011/10/24 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
详解AngularJs中$resource和restfu服务端数据交互
2016/09/21 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
[22:59]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python3+PyQt5使用数据库表视图
2018/04/24 Python
flask-restful使用总结
2018/12/04 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
python地震数据可视化详解
2019/06/18 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
python爬虫容易学吗
2020/06/02 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
水果连锁超市创业计划书
2014/01/24 职场文书
小学生操行评语大全
2014/04/22 职场文书
小区推广策划方案
2014/06/06 职场文书
向女朋友道歉的话
2015/01/20 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
乱世佳人观后感
2015/06/08 职场文书
李强感恩观后感
2015/06/17 职场文书
结婚纪念日感言
2015/08/01 职场文书