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获取电脑硬件信息及状态的实现方法
Aug 29 Python
python实现2048小游戏
Mar 30 Python
Python中类型关系和继承关系实例详解
May 25 Python
详解Python实现按任意键继续/退出的功能
Aug 19 Python
Python 通过pip安装Django详细介绍
Apr 28 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
Sep 11 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
Dec 18 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
Mar 18 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
Apr 22 Python
python 图像插值 最近邻、双线性、双三次实例
Jul 05 Python
详解Python中的进程和线程
Jun 23 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
PHP聊天室技术
2006/10/09 PHP
php FPDF类库应用实现代码
2009/03/20 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
php mysql 封装类实例代码
2016/09/18 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
$.getJSON在IE下失效的原因分析及解决方法
2013/06/16 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
javascript+canvas实现刮刮卡抽奖效果
2015/07/29 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
2015/09/01 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
小程序表单认证布局及验证详解
2020/06/19 Javascript
[01:26]DOTA2荣耀之路2:iG,China
2018/05/24 DOTA
为Python的web框架编写前端模版的教程
2015/04/30 Python
Django中使用locals()函数的技巧
2015/07/16 Python
TensorFlow安装及jupyter notebook配置方法
2017/09/08 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
详解Python3 基本数据类型
2019/04/19 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
使用CSS3的背景渐变Text Gradient 创建文字颜色渐变
2014/08/19 HTML / CSS
web页面录屏实现
2019/02/12 HTML / CSS
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
马歇尔耳机官网:Marshall Headphones
2020/02/04 全球购物
爱护环境卫生倡议书
2015/04/29 职场文书
公司酒会致辞
2015/07/30 职场文书