Python包和模块的分发详细介绍
作者:BlackMonkey 发布时间:2021-10-06 07:25:32
发布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
如图在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/*
来源:https://www.cnblogs.com/monkey-code/p/13160585.html
猜你喜欢
- chat.html <html> <head><title>asp之家-简单聊天&l
- 前言Tkinter(即 tk interface) 是 Python 标准 GUI 库,简称 “Tk&rdquo
- 项目有时要用一些Ajax的效果,因为比较简单,也就没有去用什么Ajax.net之类的东西,手写代码也就实现了。 第二天,有人反馈错
- 1,filesize()函数返回错误的值。 使用curl将某个页面下载到本地时,需要将下载到的临时文件tmpHtml.txt的内容读取到一个
- 前言无论是自己要在精心P过的自拍上添加个性文字,或者是摄影爱好者要在拍摄的作品里添加水印,亦或是在网页或者移动应用中实时生成文字和图片的组合
- 在学习return函数时候,还是要知道了解它最主要的函数作用,比如,怎么去实现返回一个值,另外还有就是我们经常会用到的使用return能够进
- Python 超简单的聊天程序客户端:import socket, syshost = '10.248.27.23'# ho
- 本文实例总结了Python实现string字符串连接的方法。分享给大家供大家参考,具体如下:以下基于python 2.7版本,代码片段真实有
- PHP使用缓存即时输出内容(output buffering)的方法。分享给大家供大家参考。具体如下:$buffer = ini_get(&
- table通过使用下面语句创建:create table userinfo(name text, email text)更快地插入数据在此用
- 类的参数定义将conda环境设置为ai,conda activate ai这个文件的由来:由于在yolov1的pytorch实现的损失函数中
- 本文实例讲述了Python实现账号密码输错三次即锁定功能。分享给大家供大家参考,具体如下:初学Python—1#实现账号输错三次即锁定use
- Python实现模拟时钟代码推荐# coding=utf8import sys, pygame, math, randomfrom pyga
- 一、简介是一个 python 内置包,不需要额外安装即可使用urllib 是 Python 标准库中用于网络请求的库,内置四个模块,分别是u
- 相关代码:JavaScript写的日期时间控件,很好用 13个超酷的js显示时间效果 <html><head><
- 需求:用的是django的框架,想显示一个基本固定的页面,用到了form_layout上图的ROW中添加的是model中的字段名,可以显示对
- 元素是文档结构的基础,在CSS中,每个元素生成了一个包含了元素内容的框(box,也译为“盒子”)。但是不同的元素显示的方式会有所不同,例如&
- SWFUpload上传组件,最初由Vinterwebb.se开发,组件主体由Flash与JavaScript整合而成,主要致力解决多文件、大
- PHP number_format() 函数实例格式化数字:<?php echo number_format("100000
- 这篇文章主要介绍了Python3的socket使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要