打包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项目!
相关文章推荐
- python项目打包成pip安装&pip install 介绍
- [Python]项目打包:5步将py文件打包成exe文件
- Py2exe 打包 Python项目(traits、traitsui、matplotlib)
- 使用pyinstaller打包Python3.项目生成exe文件
- pip打包python项目
- Python库打包到PyPI
- [Python]项目打包:5步将py文件打包成exe文件
- Python程序的打包-上传到pypi
- 把自己的python脚本打包上传到PYPI
- 源码:自己用Python写的iOS项目自动打包脚本
- [Python]项目打包:5步将py文件打包成exe文件
- [Python]项目打包:5步将py文件打包成exe文件(转)
- 使用pyinstaller工具打包python项目代码生成exe文件
- Python 如何将项目打包成exe可执行程序
- 在mac下使用py2app打包python项目
- 使用pyinstaller工具打包python项目代码生成exe文件
- python将项目文件打包发布的脚本(保留原来的项目结构)
- python3.5、pyqt5项目,pyinstaller打包exe
- 如何将自己的Python代码打包发布到pypi上
- 打包自己写的python库(Betubedl)并且发布到pypi上