打包项目上传到PyPI

大家好~我是小方,欢迎大家关注「笋货测试笔记」体完记得俾个「like」

背景

之前分享的dubbo接口测试工具,需要起个后端服务,以接口的形式进行测试dubbo接口,但是部署服务需要服务器资源,部分公司服务器资源不足,为此,将之前的dubbo接口测试工具打包成一个包,直接python代码调用即可~

创建项目

  1. 目录结构
.
├── LICENSE
├── README.md
├── dubborequests
│   ├── __init__.py
│   ├── api.py
│   ├── config.py
│   └── util.py
└── setup.py
  1. README.md

关于项目的描述文件,大概内容就是怎么安装,怎么使用

  1. LICENSE

开源License,如MIT,Apache license 2.0等等,这里我选择了MIT。关于使用说明可参考:Choose an open source license一般GitHub创建仓库可以进行选择LICENSE

打包项目上传到PyPI4. setup.py

用来描述项目,打包的时候用到这个文件。里面描述写着项目名字,项目版本,依赖哪些库,支持的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,支持的操作系统

打包项目

  1. 打包项目需要安装setuptools和wheel
pip install setuptools
pip install wheel
  1. 运行下面的命令打包
python setup.py sdist bdist_wheel
# 稳妥起见, 直接使用python3
python3 setup.py sdist bdist_wheel

这里有个坑, 要看下你本地python指向2还是3, 如果用了python2来打包, 打包出来的whl包无法安装在python3里

  1. 打包成功 打包成功后, 项目底下会生成这几个目录打包项目上传到PyPIdist目录下会存在tar.gz的源码包和xxx.whl的Wheel包。

  2. 验证是否能安装

 pip install dist/dubborequests-0.3-py3-none-any.whl
打包项目上传到PyPI
  1. 测试包功能
# 导入
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

  1. 先在PyPI注册用户pypi register

  2. 使用twine上传项目, 先安装twine

pip install twine
  1. 执行命令将打包好的库上传
twine upload dist/*
打包项目上传到PyPI
  1. 上传成功后PyPI即可看到项目文档dubborequests

可能存在的踩坑点

  1. pip install dubborequests无法找到这个库

打包项目上传到PyPI解决:

pip install dubborequests -i https://pypi.org/simple

原因:国内镜像地址暂未同步该库

  1. 重复上传

打包项目上传到PyPI这里原因是重复上传了同一个库了, 如果确实需要上传, setup.py 更新一下版本号即可

打包项目上传到PyPI
  1. 项目名重名无法上传
# 截取了知乎的某一段, 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 改一下项目名即可

打包项目上传到PyPI

总结

从创建到发布搞了一个晚上, 第一次发布踩坑还是挺多的。水了那么多, 大家快来看看我的新项目啦~ dubborequests


原文始发于微信公众号(笋货测试笔记):打包项目上传到PyPI

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/281620.html

(0)
李, 若俞的头像李, 若俞

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!