公司门户网站建设方案,建设企业网站官网下载中心,城乡现代社区建设,化妆品网络营销方案如何发布自己的第三方库1. PyPi的用途2.Python包发布步骤2.1 创建目录结构2.2 准备文件1、README.rst2、LICENSE.txt#xff0c;创建许可证3、setup.py文件4.克隆setup.py仓库#xff08;推荐#xff09;2.3 编写核心代码2.4 生成分发档案2.5 发布包到PyPi3.验证发布PYPI成功…
如何发布自己的第三方库1. PyPi的用途2.Python包发布步骤2.1 创建目录结构2.2 准备文件1、README.rst2、LICENSE.txt创建许可证3、setup.py文件4.克隆setup.py仓库推荐2.3 编写核心代码2.4 生成分发档案2.5 发布包到PyPi3.验证发布PYPI成功1. PyPi的用途
Python中我们经常会用到第三方的包默认情况下用到的第三方工具包基本都是从Pypi.org里面下载。
2.Python包发布步骤
2.1 创建目录结构
创建一个测试项目例如project_demo,在该项目下创建一个待发布的包目录例如package_mikezhou_talk并在该project_demo目录下依次创建:setup.py、LICENSE、README.rst几项文件此时目录结构为
➜ AI_project tree -L 2
.
├── LICENSE
├── README.rst
├── package_mikezhou_talk
│ └── __init__.py
└── setup.py1 directory, 4 files2.2 准备文件
接下来我们来逐一编写除了代码以外的文件。
1、README.rst
关于项目的描述文件一般包含怎样安装项目怎样使用项目等。markdown 语法可以参考 https://rest-sphinx-memo.readthedocs.io/en/latest/ReST.html
打开README.rst并输入以下内容。可以自定义此项放入一些对项目的介绍。
# Example Package
This is a simple example package. You can use[联系作者](1035959050qq.com)to write your content.2、LICENSE.txt创建许可证
上传到Python Package Index的每个包都包含许可证这一点很重要。这告诉用户安装你的软件包可以使用您的软件包的条款。开源License有如MITApache license 2.0等。有关选择许可证的帮助请访问https://choosealicense.com/。选择许可证后打开 LICENSE并输入许可证文本
3、setup.py文件
setup.py是setuptools的构建脚本用来描述项目打包的时候会用到这个文件。它告诉PyPI我们的项目叫什么名字是什么版本依赖哪些库支持哪些操作系统可以在哪些版本的Python上运行等等。
标准脚本示例
from distutils.core import setup
from setuptools import find_packageswith open(README.rst, r) as f:long_description f.read()setup(namepackage_mikezhou_talk, # 包名version1.0.0, # 版本号descriptionA small example package,long_descriptionlong_description,authormikezhou_talk,author_email762357658qq.com,urlhttps://mp.weixin.qq.com/s/9FQ-Tun5FbpBepBAsdY62w,install_requires[],licenseBSD License,packagesfind_packages(),platforms[all],classifiers[Intended Audience :: Developers,Operating System :: OS Independent,Natural Language :: Chinese (Simplified),Programming Language :: Python,Programming Language :: Python :: 2,Programming Language :: Python :: 2.7,Programming Language :: Python :: 3,Programming Language :: Python :: 3.5,Programming Language :: Python :: 3.6,Programming Language :: Python :: 3.7,Programming Language :: Python :: 3.8,Topic :: Software Development :: Libraries],)重要参数说明
name项目的名称name是包的分发名称。version项目的版本。需要注意的是PyPI上只允许一个版本存在如果后续代码有了任何更改再次上传需要增加版本号author和author_email项目作者的名字和邮件, 用于识别包的作者。description项目的简短描述克隆克隆setup.py仓库推荐long_description项目的详细描述会显示在PyPI的项目描述页面。必须是rst(reStructuredText) 格式的packages指定最终发布的包中要包含的packages。install_requires项目依赖哪些库这些库会在pip install的时候自动安装classifiers其他信息一般包括项目支持的Python版本License支持的操作系统。
4.克隆setup.py仓库推荐
如果你觉得手写setup.py脚本文件难度大太给你推荐另外一个简易方法。
大名鼎鼎的requests库的作者大神kennethreitz为大家准备了一个仓库作为一个setup.py的很好的模板当然你也可以自己手写setup.py。克隆setup.py仓库推荐
如果你觉得手写setup.py脚本文件难度大太给你推荐另外一个简易方法。
大名鼎鼎的requests库的作者大神kennethreitz为大家准备了一个仓库作为一个setup.py的很好的模板当然你也可以自己手写setup.py。
2.3 编写核心代码
接下来我们就可以编写自己的代码了要注意源代码文件夹仓库里的package_mikezhou_talk包目录的名字与setup.py里配置的包名Name要一致。
这一部内容就根据各自的需求自行实现即可。例如我在示例package_mikezhou_talk包目录下新建了一个main.py文件在该文件下实现待实现的功能。
示例
import itertoolscase_list [用户名, 密码]
value_list [正确, 不正确, 特殊符号, 超过最大长度]def gen_case(itemcase_list, valuevalue_list):输出笛卡尔用例集合for i in itertools.product(item, value):print(输入.join(i))def test_print():print(欢迎搜索关注公众号: 「测试开发技术」!)if __name__ __main__:test_print()2.4 生成分发档案
下一步是为包生成分发包。这些是上传到包索引的档案可以通过pip安装。
确保您拥有setuptools并wheel 安装了最新版本
python3 -m pip install --user --upgrade setuptools wheel生成这前可以先运行python setup.py check检查setup.py是否有错误如果没报错误则进行下一步输出一般是running check。
1、准备好上面的步骤, 一个包就基本完整了, 剩下的就是打包了可以使用下面命令打包一个源代码的包:
python setup.py sdist build这样在当前目录的dist文件夹下, 就会多出一个tar.gz结尾的包了:
2、也可以打包一个wheels格式的包, 使用下面的命令就可以了:
python setup.py bdist_wheel --universal这样会在dist文件夹下面生成一个whl文件.
3、或者从setup.py位于的同一目录运行此命令
python3 setup.py sdist bdist_wheel上面的命令会在dist目录下生成一个tar.gz的源码包和一个.whl的Wheel包。
2.5 发布包到PyPi
1、接下来就是去https://pypi.org/account/register/注册账号如果有账号的请忽略记住你的账号和密码后面上传包会使用。
2、接下来就是上传你的包了这里使用twine上传。需要先安装twine用 twine上传分发包并且只有 twine 1.11.0 才能将元数据正确发送到 Pypi上
pip install twine3、安装完之后运行下面的命令将库上传上传包期间会让你输入注册的用户名和密码
twine upload dist/*输入 PyPI注册的用户名和密码。命令完成后您应该看到与此类似的输出
➜ twine upload dist/*
Uploading distributions to https://upload.pypi.org/legacy/
Enter your username: mikezhou_talk
Enter your password:
Uploading package_mikezhou_talk-1.0.0-py3-none-any.whl
100%|██████████████████████████████████████| 7.84k/7.84k [00:0300:00, 2.29kB/s]
Uploading package_mikezhou_talk-1.0.0.tar.gz
100%|██████████████████████████████████████| 6.64k/6.64k [00:0100:00, 6.05kB/s]View at:
https://pypi.org/project/package-mikezhou-talk/1.0.0/上传完成后我们的项目就成功地发布到PyPI了。
3.验证发布PYPI成功
上传完成了会显示success,我们直接可以在PyPI上查看.
您可以使用pip来安装包并验证它是否有效。创建一个新的virtualenv 请参阅安装包以获取详细说明并从TestPyPI安装包
python3 -m pip install --index-url https://test.pypi.org/simple/ package-mikezhou-talk或 pip install package-mikezhou-talk -i https://www.pypi.org/simple/ 如下图所示图片
进入Python Shell验证结果如下图片
至此我们已经成功地将自己开发的Python程序发布到了PyPI此时你可以直接在你本地的环境通过pip命令安装示例中的package-mikezhou-talk这个包了。