一.简单介绍

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生成whl包_python之PypI打包whl文件相关推荐

  1. python自己写包_Python将自己写的模块进行打包

    将项目打包成模块的想法来自于flask文档教程,这不是在PyCon上和阿明合了照嘛,这不得多看看人家的东西.有兴趣的可以看看文档的项目可安装化部分,作者将flask项目打包成一个包,使其可以再任何地方 ...

  2. python使用pkg包_Python deb-pkg-tools包_程序模块 - PyPI - Python中文网

    python包deb-pkg-tools是要构建和 检查Debian binary packages和二进制包的存储库.它的 主要用例是自动化构建. 一些功能在命令行界面中公开(如下所述) 因为在sh ...

  3. python 枪表情包_Python自动生成表情包,python在手,从此斗图无敌手

    作为一个数据分析师,应该信奉一句话----"一图胜千言".不过这里要说的并不是数据可视化,而是一款全民向的产品形态----表情包!!!! 表情包不仅仅是一种符号,更是一种文化:是促 ...

  4. python 枪表情包_Python自动生成表情包 Python在手 从此斗图无敌手

    作者 | Python雁横 如需转载,请联系原作者授权 作为一个数据分析师,应该信奉一句话--"一图胜千言".不过这里要说的并不是数据可视化,而是一款全民向的产品形态--表情包!! ...

  5. python镜像下载包_python包详解

    干货大礼包!21天带你轻松学Python(文末领取更多福利) 点击查看课程视频地址 本课程来自于千锋教育在阿里云开发者社区学习中心上线课程<Python入门2020最新大课>,主讲人姜伟. ...

  6. python序列解包_python中解包

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 序列解包(sequence unpacking)是python中非常重要和常用的 ...

  7. python生成html报表_python生成HTMl报告(unittest)

    放在*\python3\script 或者放在当前项目文件夹下 亦或者在python35下的lib文件夹下 (注意最好放在根目录下) from HTMLTestRunner import HTMLTe ...

  8. Python生成依赖包文件requirements.txt并下载安装

    Python查看安装的包 pip list Python生成requirements.txt pip freeze > requirements.txt Python下载requirements ...

  9. python生成数据库指令_Python学习—数据库操作

    python2中操作数据库:MySQLdb python3中操作数据库:pymysql python接连数据库 1.创建数据库连接: mysql.connect()函数 2.执行数据库操作: 执行数据 ...

最新文章

  1. cadence原理图软件(orcad)层级原理图与位号
  2. 【机器学习入门笔记7:TensorFlow常量变量的定义】20190210
  3. volatile实现禁止指令重排底层操作原理
  4. VTK:线性挤压用法实战
  5. 是什么能让 APP 快速精准定位到我们的位置?
  6. 配置源码管理工具(2)
  7. 在家过年这两天|多图
  8. 运行java是提示 选择未包含 main 类型 如何解决_RuoYi 若依 代码生成器使用教程...
  9. 美图影像节发布六款新品 满足用户生活、工作全方位变美需求
  10. react中创建组件
  11. python下载网易云音乐付费歌曲有哪些_Python3批量下载网易云音乐热歌榜
  12. 微信棋牌H5游戏开发教程以及如何有效防止被人恶意攻击
  13. java初级程序员需要掌握技能,快来看鸭~
  14. 很多人觉得FPGA难学,因为他们没总结出数电的尽头是模电!
  15. JESD204B协议基础知识
  16. 1.5 18:鸡尾酒疗法
  17. geoserver osm 导入_OSM导入PostGreSQL数据库 | 学步园
  18. 【已解决】Mysql 存储 emoji 表情报错 Incorrect string value: ‘\xF0\x9F\x98\x82\xF0\x9F
  19. 人工智能的“虚假式繁荣”
  20. 函数平移口诀_二次函数平移规律口诀

热门文章

  1. java 静态变量 存储_Java中存储的静态方法和静态变量在哪里?
  2. git stash的详细讲解
  3. 飞凌嵌入式对外征稿啦!500-1000元/篇,快到碗里来
  4. SQL Server数据库同步方式总结 VS Beedup
  5. python正确的输入语句为,python输入赋值语句
  6. 国产好日历:WeCal 微历
  7. 微信笔记html5,微信HTML5活动动画页面开发笔记
  8. STM32电子时钟 WATCHX-NWATCH( 开源)
  9. 我的创作纪念日-Jiawen9
  10. iOS动画——ViewAnimations