python创建和上传自己的PyPI库

文章目录

  • 创建和上传自己的PyPI库
    • pypi
    • 准备文件
    • 制作PyPI包
    • 在上传前,先本地验证
    • 注册PyPI账户
    • 上传pypi
    • 判断python包质量之 SourceRank
      • Libraries.io
    • 参考

创建和上传自己的PyPI库

pypi

官方地址:https://pypi.org/

Python中我们经常会用到第三方的包,默认情况下,用到的第三方工具包基本都是从Pypi.org里面下载。

PyPI 是 Python Package Index 的首字母简写,其实表示的是 Python 的 Packag 索引,这个也是 Python 的官方索引。

如何将自己开发的一个包上传到PyPI,供其它人使用呢?

准备文件

  • LICENSE.txt,创建许可证
    上传到Python Package Index的每个包都包含许可证,这一点很重要。这告诉用户安装你的软件包可以使用您的软件包的条款。开源License,有如MIT,Apache license 2.0等。有关选择许可证的帮助,请访问https://choosealicense.com/。选择许可证后,打开 LICENSE并输入许可证文本。

  • setup.py文件
    setup.py是setuptools的构建脚本,用来描述项目,打包的时候会用到这个文件。它告诉PyPI我们的项目叫什么名字,是什么版本,依赖哪些库,支持哪些操作系统,可以在哪些版本的Python上运行。
    建议大家直接编辑其他仓库里的setup.py, 只需要修改一些必要的配置就可以了

Python项目的setup.py文件,用于定义项目的配置和依赖关系,以便于安装、打包和发布.

一个基本的setup.py可能如下所示:

from setuptools import setup, find_packages

setup(
    name='mypackage',
    version='0.1',
    packages=find_packages(),
    install_requires=[
        # 任何依赖项都在这里列出
    ],
    author='Your Name',
    author_email='youremail@example.com',
    description='A brief description of your package',
    license='MIT',
    keywords='sample setuptools development',
    url='https://github.com/yourusername/mypackage'
)
  • name参数指定了项目的名称。

注意:如果你想让pypi展示readme格式的描述,需要这样添加:

long_description=open('README.md', encoding='utf-8').read(),
long_description_content_type='text/markdown',

制作PyPI包

使用以下命令构建源代码分发:

python setup.py sdist

这段命令用于构建Python包的分发文件(distribution files),包括源代码分发文件(source distribution file)和二进制分发文件(wheel distribution file)。

  • python setup.py sdist:执行setup.py脚本中的sdist命令,将源代码打包成一个源代码分发文件(tar.gz格式)。源代码分发文件通常用于在不同的环境中构建和安装Python包。

  • python setup.py bdist_wheel:执行setup.py脚本中的bdist_wheel命令,将源代码构建为一个二进制分发文件(wheel格式)。二进制分发文件是Python的二进制包格式,可以更快地安装和部署Python包。

使用这两个命令可以同时生成源代码分发文件和二进制分发文件,以便满足不同用户和环境的需求。

注意,这些命令需要在项目根目录下执行,其中的setup.py文件是用于构建包的配置文件。在执行这些命令之前,您需要确保已经安装了setuptools包和wheel包。

在执行python setup.py sdist或python setup.py bdist_wheel命令时,会生成一个dist目录,其中包含一个或多个构建好的分发文件。同时,还会生成一个httpcat_sdk.egg-info目录,其中包含了有关Python包的元数据信息,如包的名称、版本、作者、依赖项列表等。

这些元数据信息将被用于包的安装、发布和管理。例如,当用户执行pip install命令来安装您的包时,httpcat_sdk.egg-info目录中的元数据将被读取和使用。该目录还可以用于其他工具和系统,以提供关于包的信息和功能。

上传pypi不需要 httpcat_sdk.egg-info目录, httpcat_sdk.egg-info目录是在构建过程中自动生成的,用于存储包的元数据信息,例如包的名称、版本、作者等。它不需要手动添加到上传的文件列表中,而是作为构建过程的中间产物自动创建的。

在上传前,先本地验证

在上传到PyPI之前,可以进行本地验证以确保您的包能够正常工作。

  1. 上一步中,使用python setup.py sdist或python setup.py bdist_wheel命令构建分发文件。这将生成一个或多个分发文件,例如.tar.gz文件或.whl文件。
  2. 使用pip命令安装您的包。例如,可以使用pip install /path/to/dist/package.tar.gz或pip install /path/to/dist/package.whl来安装分发文件。

注册PyPI账户

在发布到PyPI之前,您需要在pypi.org上创建一个账户。
注册PYPI官网个人用户
网址:https://pypi.org/account/register/

注册完成后,需要创建API tokens,后面上传pypi包用到。

API tokens provide an alternative way to authenticate when uploading packages to PyPI. Learn more about API tokens.
API令牌提供了一种将软件包上传到PYPI时进行身份验证的替代方法。了解有关API令牌的更多信息。
在这里插入图片描述

上传pypi

执行上传到PyPI的命令(例如使用twine工具)时,只需要指定分发文件所在的目录,例如dist/*,而不需要包含httpcat_sdk.egg-info目录。上传工具会自动识别并使用分发文件中的元数据信息。

为了上传您的包,您需要一个名为twine的工具。您可以使用pip安装它:

pip install twine
twine upload dist/*

根据提醒,输入api token即可!

判断python包质量之 SourceRank

SourceRank是根据一系列指标为一个包分配的分数,它在整个网站上用于提升高质量的包。

这些因素基于使包看起来可靠的属性,并且可以用来比较不同的包。SourceRank的目的是通过综合评估包的质量和可靠性来帮助开发者做出更好的选择。它可以帮助开发者识别和选择质量更高的软件包,从而提高项目的可靠性和稳定性。

SourceRank的具体算法是基于一系列指标和权重,这些指标包括包的活跃度、维护性、社区支持、文档质量等。通过使用这些指标,SourceRank可以对包进行评级,并根据评级为包分配一个分数,以衡量其质量和可靠性。

总结,SourceRank是一个综合评估软件包质量的指标,它可以帮助开发者在选择软件包时做出更明智的决策,并提升项目的可靠性和稳定性。

如下,我们点击Libraries.io可以查看SourceRank得分!

Libraries.io

在这里插入图片描述

在这里插入图片描述
Libraries.io是一个用于跟踪和分析开源软件包的平台,它提供了各种开源包的信息和统计数据。

对于PyPI上的包,Libraries.io获取和分析PyPI的元数据,并使用这些数据来生成统计信息。这些统计信息包括包的依赖关系、被依赖关系、版本历史、贡献者等等。

具体来说,对于统计包的依赖关系,Libraries.io分析PyPI中的包信息和依赖关系配置文件,如requirements.txt和setup.py。它会检索和分析这些文件中明确指定的依赖关系,从而确定包之间的依赖关系。

Libraries.io可能会使用项目的URL和其他公开可用的信息来关联和跟踪与PyPI上的包对应的GitHub仓库。这样,Libraries.io可以提供有关包的更多信息,例如贡献者、开源许可证、活跃度等等。

注意,Libraries.io的数据可能会有一定的延迟,因此在包发布后的一段时间内,统计数据可能不会立即更新。此外,Libraries.io可能会使用自己的算法和方法来分析和计算包的依赖关系,并根据其自身的规则为包分配统计数据。

参考

从零到一:九分钟开发一个Python pip包
参考URL: https://zhuanlan.zhihu.com/p/660586549
打造属于你的Python宝库:轻松创建和上传自己的PyPI库
参考URL: https://zhuanlan.zhihu.com/p/625270440

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/437386.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用nginx输入端口号显示404

输入对应的端口号显示404 先检查当前nginx文件夹的路径是没有中文的查看是否没有开启nginx:ctrlaltdelete打开任务管理器,看看有没有nginx.exe进程(一般是有两个进程)如果没有进程说明没有打开nginx,查看端口号是否被…

金三银四求职季,这个AI神器助你斩获高薪Offer!

金三银四将至,又到了求职的高峰季,不管是招聘方,还是求职者,肉眼可见都会忙到飞起。 过去准备招聘 JD 或求职简历,都依赖人工编辑和包装,而眼下已进入 AI 时代,善用 AI 的人,无形中…

可惜了微软将终止对 Android Windows 子系统(WSA)的支持。因此,自 2035 年 3 月 5 日起,Windows 上的 WSA拜拜啦

微软将终止对安卓子系统WSA的支持。因此自 2035 年 3 月 5 日起,Windows上依赖于 WSA 的所有应用程序和游戏将不再受支持 可惜了! 多么好用的功能! 微软决定放弃了! 还没有好好用起来,就结束了… 世界变化太快,都来不及反应了…

【HTML】HTML基础2(一些常用标签)

目录 例子 首先是网页图标 然后是一些常用标签 插入图片 例子 <!DOCTYPE html> <html><head><link rel"icon" href"img/银河护卫队-星爵.png" type"image/x-icon"><meta charset"utf-8"><title>…

windows机U盘/硬盘直接连接虚拟机失败问题解决

0问题描述 物理机为Windows操作系统&#xff0c;安装VMare后加载了Ubuntu操作系统的虚拟机&#xff1b;外接存储插入电脑&#xff0c;想直接连接虚拟机向虚拟机中拷贝文件&#xff0c;但是连接失败。如图&#xff1a; 1&#xff09;在弹框中选择虚拟机然后点击确定&#xff1b…

Unity性能优化篇(十二) 音频优化之导入音频后的属性设置

Unity支持后缀为.wav、.ogg、.mp3的音频文件&#xff0c;但建议使用.wav&#xff0c;因为Unity对它的支持特别好。 注意&#xff1a;Unity在构建项目时总是会自动重新压缩音频文件&#xff0c;因此无需刻意提前压缩一个音频文件再导入Unity&#xff0c;因为这样只会降低该音频文…

Redis几大数据类型

使用场景&#xff1a; Redis 数据类型及应用场景https://segmentfault.com/a/1190000012212663 Redis的五种常用数据类型在实际应用中有丰富的使用场景&#xff1a; 字符串&#xff08;String&#xff09; 缓存&#xff1a;存储经常查询但不频繁修改的数据&#xff0c;如网页…

计算机网络 八股

计算机网络体系结构 OSI&#xff1a;物理层、数据链路层、网络层、运输层、会话层、表示层、应用层

EGO-Planner学习笔记

目录 前言感知层硬件部分算法部分 运动规划层路径的表示方法路径搜索轨迹优化 控制层 前言 对于一般无人机设计&#xff0c;可以将无人机的飞行控制过程分为感知层&#xff0c;运动规划层以及控制层&#xff0c;框图如下 感知层对无人机的状态信息进行解析获取&#xff0c;结…

TikTok矩阵获客软件的核心源代码是什么?

随着互联网的不断发展&#xff0c;社交媒体已成为企业获客的重要渠道之一&#xff0c;在众多的社交媒体平台中&#xff0c;TikTok凭借其庞大的用户群体和活跃的社交氛围&#xff0c;成为了众多企业竞相争夺的营销高地。 在这样的背景下&#xff0c;TikTok矩阵获客软件应运而生…

接口测试,后端接口还没开发完,如何测?解决看这一篇就够了......

前言 在测试的时候经常会碰到后端开发工程师的接口还没有开发完成&#xff0c;但是测试任务已经分配过来。没有接口怎么测试呢&#xff1f; 测试人员可以通过 mock server 自己去造一个接口来访问。mock server 可用于模拟真实的接口。收到请求时&#xff0c;它会根据配置返回…

【C++】学习记录

一、第一个C程序 #include<iostream> using namespace std;int main() {cout << "Hello World!";return 0; } 二、数据类型、变量与常量、运算符 2.1 数据类型 2.2 变量与常量 2.3 运算符 三 、判断语句&#xff08;if-else、switch-case&#xff09; …

【C++从0到王者】第五十一站:B+树

文章目录 一、B树1.B树的概念2.B树的特性3.B树的插入的过程4.总结 二、B*树1. B*树的概念2.B*树的分裂 三、总结四、B树系列和哈希和平衡搜索树作对比五、B树的一些应用1.索引2.MySQL索引3.MyISAM2.InnoDB 一、B树 1.B树的概念 B树是B树的变形&#xff0c;是在B树基础上优化的…

浅谈社会工程学攻击

一、前言 1.1 社会工程学起源 社会工程学是黑客米特尼克在《欺骗的艺术》中所提出&#xff0c;其初始目的是让全球的网民们能够懂得网络安全&#xff0c;提高警惕&#xff0c;防止没必要的个人损失。但在我国黑客集体中还在不断使用其手段欺骗无知网民制造违法行为&#xff0c;…

大数据分析技术工程师CCRC-BDATE

大数据分析技术工程师介绍 大数据始于科技之美&#xff0c;归于创造价值。大数据时代&#xff0c;“谁用好数据&#xff0c;谁就能把握先机、赢得主动”。当下数据驱动的电信、社交媒体、生物医疗、电子政务商务等行业都在产生着海量的数据&#xff0c;随着大规模数据关联、交叉…

论文阅读_世界模型

1 2 3 4 5 6 7 8英文名称: World Models 中文名称: 世界模型 链接: https://arxiv.org/abs/1803.10122 示例: https://worldmodels.github.io/ 作者: David Ha, Jurgen Schmidhuber 机构: Google Brain, NNAISENSE, Swiss AI Lab, IDSIA (USI & SUPSI) 日期: 27 Mar 2018 引…

C++项目--高并发内存池

目录 一、项目介绍二、内存池介绍2.1 池化技术2.2 内存池2.3 内存池主要解决的问题2.4 malloc 三、定长内存池的实现3.1 定长内存池概念3.2 内存池管理释放对象3.3 内存池申请对象3.4 定长内存池整体代码3.5 性能对比 四、高并发内存池整体框架设计4.1 该项目解决的问题4.2 整体…

销冠MPV增配不增价,2024款腾势D9正式上市

3月6日&#xff0c;2024款腾势D9正式上市&#xff0c;官方指导价33.98万元起。销冠MPV增配不增价&#xff0c;并推出2000元定金抵扣车辆尾款10000元等上市权益。针对老用户也推出了30000元置换补贴等感恩回馈。 作为腾势汽车破局豪华MPV全品类冠军的扛鼎之作&#xff0c;腾势D9…

VUE3 显示Echarts百度地图

本次实现最终效果 技术基础以及环境要求 vue3 echarts 百度地图API 要求1&#xff1a; VUE3 环境搭建&#xff1a;https://blog.csdn.net/LQ_001/article/details/136293795 要求2&#xff1a; VUE3 echatrs 环境搭建:https://blog.csdn.net/LQ_001/article/details/1363…

Matter环境下GD32编译环境的搭建

1、Matter介绍 Matter由CSA&#xff08;连接标准联盟&#xff09;发起&#xff0c;由巨头公司联合推出&#xff0c;旨在解决通信协议纷繁复杂的碎片化问题&#xff0c;打破多生态系统间的监护壁垒&#xff0c;实现智能设备的无缝通信与写作。 Matter开发环境安装 2、环境配置…