您的位置:首页 > 编程语言 > Python开发

打包Python项目到pypi

2019-04-28 22:32 134 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_41653645/article/details/89647469

需求场景

在公司的多个项目中都需要用到同样的代码,并且确定这些代码非常稳定,或者说较少改动,我们可以把这些代码打包成一个类库,上传到pypi包索引,后续所有的项目只需要使用pip包管理工具install即可,非常方便。

准备好你的项目

创建包文件打包项目

  • 创建setup.py :setup.py是setuptools的构建脚本。它告诉setuptools你的包(例如名称和版本)以及要包含的代码文件
import setuptools

with open("README.md", "r") as fh:
long_description = fh.read()

# 配置项比较多,有些不是必须,可参考官方文档 https://packaging.python.org/guides/distributing-packages-using-setuptools/
setuptools.setup(
name="hs_rpc", # 项目的名字,将来通过pip install hs_rpc安装,不能与其他项目重复,否则上传失败
version="0.0.3", # 项目版本号,自己决定吧
author="huansi_mes_team", # 作者
author_email="751995207@qq.com", # email
description="rpc服务打包",  # 项目描述
long_description=long_description, # 加载read_me的内容
long_description_content_type="text/markdown", # 描述文本类型
url="",  # 项目的地址,比如github或者gitlib地址
packages=setuptools.find_packages(),  # 这个函数可以帮你找到包下的所有文件,你可以手动指定
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
], # 该软件包仅与Python 3兼容,根据MIT许可证进行许可,并且与操作系统无关。您应始终至少包含您的软件包所使用的Python版本,软件包可用的许可证以及您的软件包将使用的操作系统。有关分类器的完整列表,请参阅 https://pypi.org/classifiers/。
install_requires=[
'beautifulsoup4',
'Click',
'Flask',
'google',
'grpcio',
'protobuf',
'soupsieve',
'six',
], # 项目依赖,也可以指定依赖版本
)
# hello 环思
  • 创建许可证
    上传到Python Package Index的每个包都包含许可证,这一点很重要。这告诉用户安装您的软件包可以使用您的软件包的条款。有关选择许可证的帮助,请访问 https://choosealicense.com/。选择许可证后,打开 LICENSE并输入许可证文本。例如,如果您选择了MIT许可证:
Copyright (c) 2018 The Python Packaging Authority

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

生成分发档案

  • 确保您拥有setuptools并wheel 安装了最新版本:
python3 -m pip install --upgrade setuptools wheel
  • 现在从setup.py位于的同一目录运行此命令:
python3 setup.py sdist bdist_wheel
  • 此命令应输出大量文本,一旦完成,跟目录下对多出三个文件夹

上传分发档案

最后,是时候将您的包上传到Python Package Index了!

  • 创建账户:您需要做的第一件事是在PyPI上注册一个帐户。

  • 邮箱激活

  • 现在您已注册,您可以使用twine上传分发包。你需要安装Twine:

python3 -m pip install --upgrade twine
  • 安装完成后,运行Twine以上传所有存档dist:
python3 -m twine upload  dist/*
  • 系统将提示您输入使用PyPI注册的用户名和密码。命令完成后,您应该看到与此类似的输出:
Enter your username: [your username]
Enter your password:
Uploading hs_rpc-0.0.1-py3-none-any.whl
100%|█████████████████████| 4.65k/4.65k [00:01<00:00, 2.88kB/s]
Uploading hs_rpc_your_username-0.0.1.tar.gz
100%|█████████████████████| 4.25k/4.25k [00:01<00:00, 3.05kB/s]
  • 上传后,您的软件包应该可以在PyPI上查看

安装新上传的软件包

想必大家都配置了国内镜像源吧,这里上传后会有个时长问题,所以要使用国外的源,否则会找不到

pip install  -i https://pypi.python.org/pypi  hs_rpc

程序更新升级的话

pip install  -i https://pypi.python.org/pypi --upgrade hs_rpc

后续代码修改

  • 修改代码
  • 修改版本号
  • 重新生成分发档案
  • 再次上传

恭喜,您已经打包并分发了一个Python项目!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: