2024一站式解决 python打包代码,发布到pypi
文章目录
- 2024一站式解决 python打包代码,发布到pypi
- 一、前言
- 二、pypi账户注册与配置
- 2.1 账户注册
- 2.2 双因素认证
- 2.3 API token生成
- 三、代码打包
- 3.1 准备代码
- 3.2 编写setup.py文件
- 3.3 LICENSE
- 3.3.1 常见的开源许可证
- 3.4 构建包
- 3.4.1 环境安装
- 3.4.2 打包
- 3.4.3 上传包到pypi
- 四、测试与更新
- 4.1 上传pypi库测试
- 4.2 库更新
一、前言
各位开发者你们好,在这个万众创新的时代,发布自己的代码到pypi上逐渐变越发常见,不过网上教程良莠不齐,受限于平常时间,只能简单整理一下,下面是具体步骤。
个人跑通pypi上传项目全流程大概耗时40分钟左右,请预留一定时间,跟完全流程。
二、pypi账户注册与配置
2.1 账户注册
在代码正式发布到pypi之前,你需要提前完成pypi账户注册和配置
pypi地址:https://pypi.org/
在这里按照信息填完,申请注册即可。
注:邮箱可能会被归类到垃圾邮箱。如果在收件箱没有找到可以看看垃圾邮箱。
2.2 双因素认证
注册账号,注册后,需要双因素认证,可使用恢复代码、usb、扫码(支持 TOTP 标准的常用扫码工具,Google Authenticator、Authy、Microsoft Authenticator、LastPass Authenticator)
本人的双因素认证是使用了:恢复代码和Microsoft Authenticator这个扫码工具
其他TOTP标准扫码工具集如下:https://pypi.org/help/#totp
认证流程的话就是下载后,扫认证码即可(很显眼这个码,不会认错的),具体使用哪个TOTP扫码工具各位酌情选择。
2.3 API token生成
在pypi账号设置,Account settings中,创建token,创建后记录好API token,在代码上传的时候会用到。
三、代码打包
3.1 准备代码
一个根目录,包含所有代码。
- 一个 setup.py 文件,其中包含有关您的包的信息(名称、版本、依赖等)。
- 可选的 README.md 或 README.rst 文件,说明您的项目。
- 一个 LICENSE 文件,说明您的包的许可证。
- 一个包含 Python 代码的子目录。
- my_package/
setup.py
README.md
LICENSE
my_package/- init.py
module1.py
module2.py
- init.py
3.2 编写setup.py文件
from setuptools import setup, find_packagessetup(name='my_package',version='0.1',packages=find_packages(),description='A simple example package',long_description=open('README.md').read(),# python3,readme文件中文报错# long_description=open('README.md', encoding='utf-8').read(),long_description_content_type='text/markdown',url='http://github.com/yourusername/my_package',author='Your Name',author_email='your.email@example.com',license='MIT',install_requires=[# 依赖列表],classifiers=[# 分类信息]
)
version:版本号。
my_package:包含 Python 代码子目录的名称。
description:描述。
long_description:读取readme文件
url:可不填
license:证书类型(下面说明)
3.3 LICENSE
在软件和开源项目中,LICENSE 文件非常重要,它定义了他人可以如何使用、修改、共享你的代码。LICENSE 文件通常包含了特定的许可证全文,这个许可证规定了对代码的使用权限和限制。
3.3.1 常见的开源许可证
-
MIT License:一种非常宽松的许可证,允许他人几乎无限制地使用你的代码。
-
GNU General Public License (GPL):要求任何分发的软件或其衍生品都必须开源。
-
Apache License 2.0:允许商业使用,但要求保留版权和许可证声明。
-
BSD License:一种简单的许可证,有几个不同的变体,但通常都很宽松。
一个典型的 MIT 许可证:
MIT LicenseCopyright (c) [year] [fullname]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.
在这个例子中,你需要将 [year] 替换为当前年份,[fullname] 替换为你的名字或组织名。
3.4 构建包
3.4.1 环境安装
pip install wheel
pip install twine # twine 是一个用于上传包到 PyPI 的工具。
pip install setuptools
3.4.2 打包
setup.py层级,执行命令:
python setup.py sdist bdist_wheel
3.4.3 上传包到pypi
twine upload dist/*
输入2.3 生成API Token
注:setup.py中,名称不能与已有的重复
上传成功后的运行示意图如下:
四、测试与更新
4.1 上传pypi库测试
pip install my_package
安装成功!
注:如果之前换了清华源,可能上传后要过一段时间才能从清华源安装。方式二就是临时从pypi进行下载如:
pip install folerhandle -i https://pypi.org/simple
4.2 库更新
(1)更新的时候需要删掉之前生成的dist
(2)setup.py 上更新Version
(3)重新执行一遍3.4.2 打包和3.4.3 上传包到pypi
到这里这项上传到pypi的小技能就过完了,如果有什么问题欢迎在评论区中留言。