大家好~我是小方,欢迎大家关注「笋货测试笔记」体完记得俾个「like」呀
背景
之前分享的dubbo接口测试工具,需要起个后端服务,以接口的形式进行测试dubbo接口,但是部署服务需要服务器资源,部分公司服务器资源不足,为此,将之前的dubbo接口测试工具打包成一个包,直接python代码调用即可~
创建项目
-
目录结构
.
├── LICENSE
├── README.md
├── dubborequests
│ ├── __init__.py
│ ├── api.py
│ ├── config.py
│ └── util.py
└── setup.py
-
README.md
关于项目的描述文件,大概内容就是怎么安装,怎么使用
-
LICENSE
开源License,如MIT,Apache license 2.0等等,这里我选择了MIT。关于使用说明可参考:Choose an open source license一般GitHub创建仓库可以进行选择LICENSE
用来描述项目,打包的时候用到这个文件。里面描述写着项目名字,项目版本,依赖哪些库,支持的Python版本,支持的操作系统
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="dubborequests",
version="0.3",
author="fang",
author_email="664616581@qq.com",
description="Telnet command test dubbo",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/JokerChat/dubbo_requests",
packages=setuptools.find_packages(),
python_requires='>=3.7.0',
install_requires=['kazoo'],
license='MIT',
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
)
-
name 项目(命名项目时, 要看看PyPi是否存在同名的项目) -
version 项目的版本号, 后续代码改动了, 需要更新版本号, PyPi只允许一个版本存在 -
author 作者名 -
author_email 邮箱地址 -
description 项目的简短描述信息 -
long_description 项目的详细描述信息, 会显示在PyPi项目描述页面 -
long_description_content_type 用于指定long_description的标记类型,上面的例子是markdown -
url 一般是项目的仓库地址 -
packages 指定最终发布的包中要包含的packages。上面的setuptools.find_packages()会自动搜索项目根目录下的所有packages -
install_requires 项目依赖于哪些库, 这些库都会在pip install时自动安装 -
license 选择的开源License类型 -
classifiers 其他信息,一般包括项目支持的Python版本,License,支持的操作系统
打包项目
-
打包项目需要安装setuptools和wheel
pip install setuptools
pip install wheel
-
运行下面的命令打包
python setup.py sdist bdist_wheel
# 稳妥起见, 直接使用python3
python3 setup.py sdist bdist_wheel
这里有个坑, 要看下你本地python指向2还是3, 如果用了python2来打包, 打包出来的whl包无法安装在python3里
pip install dist/dubborequests-0.3-py3-none-any.whl

-
测试包功能
# 导入
import dubborequests
from dubborequests.config import Config
Config.zookeeper_url_list = ['192.168.240.15:2181', '192.168.240.15:2182', '192.168.240.15:2183']
# 获取dubbo服务详情
data = dubborequests.search('cn.com.xxx.sso.ehr.api.dubbo.SsoEmpInfoService')
# 详细示例可以看README.md
发布项目到PyPI
-
先在PyPI注册用户pypi register
-
使用twine上传项目, 先安装twine
pip install twine
-
执行命令将打包好的库上传
twine upload dist/*

-
上传成功后PyPI即可看到项目文档dubborequests
可能存在的踩坑点
-
pip install dubborequests无法找到这个库
pip install dubborequests -i https://pypi.org/simple
原因:国内镜像地址暂未同步该库
-
重复上传
这里原因是重复上传了同一个库了, 如果确实需要上传, setup.py 更新一下版本号即可

-
项目名重名无法上传
# 截取了知乎的某一段, https://zhuanlan.zhihu.com/p/106166278
HTTPError: 403 Client Error: The credential associated with user 'jinhang' isn't allowed to upload to project 'pypi'. See https://pypi.org/help/#project-name for more information. for url: https://upload.pypi.org/legacy/
这个没遇到过, 原因是跟别人的项目名重复, setup.py 改一下项目名即可

总结
从创建到发布搞了一个晚上, 第一次发布踩坑还是挺多的。水了那么多, 大家快来看看我的新项目啦~ dubborequests
原文始发于微信公众号(笋货测试笔记):打包项目上传到PyPI
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/281620.html