python之PypI打包whl文件
一.简单介绍
python中我们经常会用到第三方的包作为工具,比如爬虫解析工具,网络请求工具等。之所以要把它封装成包,意识为了技术与业务分离,二是为了能多
项目多平台共用。python里面用到的第三方工具包基本都是从Pypi.org里面下载的。下面具体介绍如何打一个自己的包上传到Pypi中作为工具使用。
二.Pypi打包whl文件
首先,我们需要确认我们需要打包的package中已经包含了README.md、LICENSE[非必须]和setup/py文件。三者分别是说明文档,许可证以及
python setuptools所用来安装该package的构建脚本。
2.1 setup.py
setup.py中包含了package对应的信息(例如该package的名称、版本、作者)以及该package应当包含的程序文件和数据。
下面是一个setup.py的示例文件:
import os
from setuptools import setup, find_packages
path = os.path.abspath(os.path.dirname(__file__))
try:
with open(os.path.join(path, 'README.md')) as f:
long_description = f.read()
except Exception as e:
long_description = "customize okta cli"
setup(
name = "okta-cmd",
version = "0.1.0",
keywords = ("pip", "okta", "cli", "cmd", "steven"),
description = "okta cli",
long_description = long_description,
long_description_content_type='text/markdown',
python_requires=">=3.5.0",
license = "MIT Licence",
url = "https://github.com/stevenQiang/okta-cmd",
author = "steven",
author_email = "qianggao7@gmail.com",
packages = find_packages(),
include_package_data = True,
install_requires = ["requests", "click"],
platforms = "any",
scripts = [],
entry_points = {
'console_scripts': [
'okta-cmd=oktacmd:main_cli'
]
}
)
- name: 该package的名字,该名字可以由字母、数字、-组成,注意这个名字不能与其它已经上传到pypi.org的项目相同
- version: 这个就是包的发布版本,可以直接写在这,也可以从其它地方引用
- author: author可以用来指定该package的作者信息
- author_email: 这个也是指定该package的作者信息
- description: 对当前package的较短的总结
- long_description: 是对当前package的详细说明。这一详细说明将被展示在Python Package Index上当前项目的主页
- long_description_content_type: 指定了long_description内容的格式。在当前情况下为markdown
- url: 是当前package的主页链接。大多数情况下这是一个GitHub, GitLab, Bitbucket或者其他代码存储服务的链接
- packages: 是一系列应当包含在发布软件包文件(distribution package)中的可被import的python包文件。我们可以手动在此处罗列所有文件。
或者如本例中一样使用find_packages()函数自动包含所有的python包文件以及子包文件。 - python_requires: python依懒版本
- classifiers: 指定了当前package的其他元信息(metadata)。例如当前package兼容的python版本和操作系统,当前package提供的功能的类型,
当前package的许可证等等。我们应当总是至少包括当前package所支持的python版本,操作系统和许可证。注意此处定义的classifiers关键字
所包含的信息应当符合PyPI的规定。 - install_requires: 指定了当前package所依赖的其他python类库。这些指定的python类库将会在本package被安装的时候一并被安装。
- platforms: 程序适用的软件平台列表
- keywords: 程序的关键字列表
- include_package_data: 是否自动包含包内所有受版本控制(cvs/svn/git)的数据文件,默认True
- entry_points: 用来支持自动生成cli命令
使用上面的配置信息之后,会生成一个okta-cmd的命令,可以直接使用,就是在entry_points里面配置的。
目录结构:
├── LICENSE
├── README.md
├── oktacmd
│ ├── __init__.py
│ ├── cli.py
│ ├── common.py
│ ├── main.py
│ └── okta.py
├── setup.py
└── setup.sh
生成包:
1.安装最新版的setuptools和wheel
python3 -m pip install --user --upgrade setuptools wheel
2.使用sdist构建源码分发包
python setup.py sdist bdist_wheel
注意: 这里是固定的命令(确保setup.py存在于当前路径下)
当这个命令运行结束后,确保在生成的dist/文件夹下存在相应的.whl文件和.tar.gz文件。其中.tar.gz文件是我们的python package的源文件文档,
而.whl是一个软件分发包(build distribution)。新版本的pip将会首先尝试安装软件分发包,但在失败情况下会接着尝试采用源文件包安装。
三.上传项目至PyPI
- 首先注册一个PyPI的账号,链接
https://pypi.org/ - 安装最新版本twine
python3 -m pip install --user --upgrade twine
3.上传项目
使用twine上传项目的时候需要输入相应的PyPI的账号和密码。
python3 -m twine upload dist/*
python之PypI打包whl文件的更多相关文章
- 将python包发布到PyPI和制作whl文件
参考链接:wheel和egg的不同怎样将自己写的包传达到PyPi发布你自己的轮子 - PyPI打包上传实践PyPI官网上传包教程 wheel文件Wheel和Egg都是python的打包格式,目的是支持 ...
- python的whl文件安装
python27win32安装:https://www.python.org/downloads/ 下载2.7的 安装中一路下一步即可: 配置python系统环境变量: 新建: PY ...
- Python程序的打包-上传到pypi
pypi注册与配置 在pypi的官网:https://pypi.python.org/pypi 注册自己的账号激活账号之后,我们还需要将在本地配置一份文件 在用户的根目录创建文件 : .pypirc在 ...
- python 下载.whl 文件,查看已安装软件包方法
下载地址 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 另一个Python packages地址为 https://pypi.org/ 下载 ...
- python 安装whl文件
对于安装whl格式的文件,首先要安装wheel包 利用 pip install wheel或下载再安装: 下载地址: https://pypi.python.org/pypi/wheel 解压后安装: ...
- python 本地l离线安装whl文件
记录下无网络时安装Python环境 一: 单独下载文件 1.下载whl离线文件到本地,放到c盘根目录(任意位置均可,只是方便安装) https://pypi.org/ https://www.lfd. ...
- whl文件(python)安装方法
https://blog.csdn.net/fhl812432059/article/details/51745226 windows7 python2.7 1.用管理员方式打开cmd 2.首先通过p ...
- python安装whl文件的注意事项(windows系统)
首先给大家来一波福利,在没有连接外网(互联网)的情况下,只有公司内网或者断网情况下,需要安装python的一些依赖,不会操作的同学可能就会遇到麻烦.这里教大家离线安装python依赖. 方法:使用.w ...
- python用pyinstaller打包成exe文件
版本为Python2.7 一.安装Pyinstaller 1.安装pywin32 下载安装文件:查找到跟自己适用的python版本及window系统版本匹配的pywin32,下载后安装 使用pip命 ...
- windows7下怎样安装whl文件(python)
本文转载自:http://blog.csdn.net/fhl812432059/article/details/51745226 windows7 python2.7 1.用管理员方式打开cmd 2. ...
随机推荐
- DeepSeek 加持!IvorySQL 文档智能助手正式上线!
DeepSeek 加持!IvorySQL 文档智能助手正式上线! "那个配置参数到底在第几章?"--正在部署 IvorySQL 的运维工程师小 "I",第 5 ...
- 什么是swagger,一篇带你入门
一.前言 在前后端分离开发的过程中,前端和后端需要进行api对接进行交互,就需要一个api规范文档,方便前后端的交互,但api文档不能根据代码的变化发生实时动态的改变,这样后端修改了接口,前端不能及时 ...
- 修改 Proxmox VE 6.0 LVM Thin 为存储分区
PVE 安装后默认将 60G 的 SSD 分为了 14G 和 26G 的两个分区,其中 25G 为 LVM Thin,用于ISO镜像存储的分区为 14G,明显不够用,传一个 WInServer2016 ...
- 1000: 【编程入门】熟悉一下Online Judge的环境
1000: [编程入门]熟悉一下Online Judge的环境 题目描述 请不要笑.用来适应环境的题目,自然比较简单些. 计算2个整数的和.这两个整数都在1到100之间. 输入 输入只有一行,包括2个 ...
- jmeter csv变量随机取值的方法
默认的CSV文件取值是按照顺序从第一行开始取值的,需要随机取值,可安装扩张插件实现 首先安装插件 下载第一个:https://jmeter-plugins.org/downloads/old/ 下载第 ...
- 20241107,LeetCode 每日一题,使用 Go 计算两数相加
思路 模拟加法:链表存储的是逆序数位,因此从头节点开始,逐位相加可以模拟正常的加法.每两个节点的值相加,并记录进位. 逐节点相加: 创建一个新的链表,用于存储结果,每次将两个链表对应节点的值加上进位值 ...
- 从源码看 QT 的事件系统及自定义事件
事件是程序内部或外部触发的动作或状态变化的信号.在 Qt 中,所有事件都是 QEvent 派生类的对象,事件由 QObject 派生类的对象接收和处理.每一个事件都有对应的 QEvent 派生类,当事 ...
- devops组件搭配选型
名称 作用 备注 sentry 异常捕获系统 gitlab 代码仓库 jenkins 持续集成 open-falcon 监控系统 grafana 监控FE prometheus 监控系统 thanos ...
- Vue3 中的5种常见的组件传值方式,Vue3事件总线(无需插件)
Vue3 中常见的组件传值方式: Props:这是 Vue 中最常见的组件传值方式,即在父组件中定义 prop 并将数据传递给子组件. Event Bus:可以通过事件总线在两个组件之间进行通信,即定 ...
- FirstUI:Deepseek能帮我们做很多事情,而这款开源框架专为开发者设计的开源UI框架,让你的项目加速起飞
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 开发者们总是在寻找能够提高工作效率.简化开发流程的工具.今天,我们要介绍的是一个名为Firs ...