Python实现在PyPI上发布自定义软件包的方法详解
作者:赵卓不凡 发布时间:2021-12-07 17:05:02
1. 引言
在Python中我们经常使用pip来安装第三方Python软件包,其实我们每个人都可以免费地将自己写的Python包发布到PyPI上,供他人来通过pip进行安装。
在本文中,我们将从一步一步地详细介绍如何发布测试包。
2. 创建PyPI账号
网址: https://pypi.org/
我们可以通过上面的链接在PyPI官网免费创建一个帐户。
我们需要先创建一个帐户,然后才能发布测试包。
3. 创建包名
我们可以发布任意我们想要定义的包名,只要和以前发布过的包没有重名过。我们可以快速在网站PyPI上检查是否有同名包。为了方便示例,我们使用aiway来作为示例的包名。
4. 按照如下格式组织包
需要注意的是我们可以使用任意我们想要发布的包名来替换上述aiway包名。
上述脚本 src/aiway/__init__.py内容如下:
def function():
print("hello from src/aiway/__init__.py")
脚本 src/aiway/test.py内容如下:
def testfunction():
print("hello from src/aiway/test.py")
脚本LICENSE: 我们这里留白
脚本README.md: 这里可以描述包的用途
脚本pyproject.toml,内容如下:
[build-system]
requires = ["setuptools>=42"]
build-backend = "setuptools.build_meta"
我们必须创建该文件
脚本 setup.py,内容如下:
from time import time
import setuptools
with open("README.md", "r", encoding="utf-8") as fh:
long_description = fh.read()
setuptools.setup(
name="aiway",
version="0.0.0",
author="Your Name Goes Here",
author_email="youremail@gmail.com",
description="A test package",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/pypa/sampleproject",
project_urls={
"Bug Tracker": "https://github.com/pypa/sampleproject/issues",
},
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
package_dir={"": "src"},
packages=setuptools.find_packages(where="src"),
python_requires=">=3.6",
)
5. 安装 Build & Twine
接着我们通过pip来安装我们的依赖包,命令如下:
pip install build twine
我们需要用到上述两个包来将我们的测试包推送到PyPI。安装过程如下:
6. 构建测试包
接着我们来编译我们的测试包,命令如下:
python -m build
在将包上载到PyPI之前,我们需要首先使用build构建它。上述命令的输出如下:
上述命令运行完成后,我们将会得到目录dist 以及 格式为 <package-name>.egg-info的包。如下所示:
7. 上传测试包
接着我们使用以下命令将包上传,如下所示:
python -m twine upload dist/*
包twine用来将我们的测试包上传至PyPI。上述命令执行过程中需要输入我们注册的网站的用户名和密码。如下所示:
同时我们可以在网站上看到我们上传的包,如下:
如果我们只是更新已经存在的包的版本,我们可以使用如下命令:
python -m twine upload dist/* --skip-existing
同时我们可以添加调试标志--verbose,来检查上述命令执行过程中的出错信息,如下:
python -m twine upload dist/* --skip-verbose
8. 总结
本文重点介绍了如何在PyPI上发布自定义软件包的流程,其中每一步都给出了详细的解释和图解。
来源:https://blog.csdn.net/sgzqc/article/details/125231169
猜你喜欢
- 一、基本介绍logging 模块是python自带的一个包,因此在使用的时候,不必安装,只需要import即可。logging有 5 个不同
- 最近接到一个任务,就是用django后端,前段用vue,做一个普通的简单系统,我就是一搞后端的,听到vue也是比较震惊,之前压根没接触过vu
- 今天在论坛上面看到有些兄弟不知道HTC是什么东西。小生在这里稍微说一下。从5.5版本开始,Internet Explorer(IE)开始支持
- Aptana IDE现在已经被重命名为Aptana Studio,这款IDE的背后有着风险投资的支持,旨在给Web开发者
- python代码如下:import webbrowser as wbimport foliumif __name__ == '__m
- 1、确认框架中安装了第三方alibabacoud控件实现代码如下上传过程中遇到任务问题,可以进行留言<?php namespace A
- 序本文主要研究一下golang的deferdeferreturn先赋值(对于命名返回值),然后执行defer,最后函数返回defer函数调用
- 本文实例讲述了python飞机大战pygame游戏框架搭建操作。分享给大家供大家参考,具体如下:目标明确主程序职责实现主程序类准备游戏精灵组
- CacheControl 属性设置是否可缓存由 ASP 生成的输出。默认地,代理服务器不会保持缓存副本。语法:response.CacheC
- 前言以前在写C/C++代码时,可以在代码中预定义一些版本宏定义,然后再编译时从外部传入数据作为版本号。 golang代码不支持宏定义,如果每
- 本文所述实例为Python处理文本文件并生成指定格式文件的方法,具体实现功能代码如下所示:import osimport sysimport
- 本文实例讲述了python通过imaplib模块读取gmail里邮件的方法。分享给大家供大家参考。具体实现方法如下:import imapl
- 本文实例讲述了Python面向对象类的继承。分享给大家供大家参考,具体如下:一、概述面向对象编程 (OOP) 语言的一个主要功能就是“继承”
- 分析社交网站,顺带画了张图,关于facebook的基本信息架构,没有涉及应用和插件的分析。
- 在制作一个 Python 分发包时经常需要把一些文件添加到包中。最常见的例子是你希望通过 pip install 命令安装 Pyt
- 本文实例讲述了Python爬虫爬取杭州24时温度并展示操作。分享给大家供大家参考,具体如下:散点图 爬虫杭州今日24时温度 https://
- 尽管现代浏览器已经支持了众多的CSS3属性,但是大部分设计师和开发人员貌似依然在关注于一些很“主流”的属性,如border-radius、b
- 这本入门手册是否合适你?我只想告诉你我非常喜欢这本书。我对Microsoft Access的经验足以让我跳过这本傻瓜系列教材,但是实际情况是
- 听到一些人说现在做产品设计很没有成就感。没有什么创造力,除了抄袭模仿(称之为竞争分析)、千篇一律(又称规范标准)还有复杂的流程、粗制滥造的表
- 本文实例为大家分享了python实现简易学生信息管理系统的具体代码,供大家参考,具体内容如下一、系统功能1.录入学生信息2.查找学生信息3.