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_packagessetup(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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读:SDXL Improving Latent Diffusion Models for High-Resolution Image Synthesis

SDXL Improving Latent Diffusion Models for High-Resolution Image Synthesis 论文链接 代码链接 介绍 背景:Stable Diffusion在合成高分辨率图片方面表现出色,但是仍然需要提高本文提出了SD XL,使用了更大的UNet网络,以及增…

javaSwing飞机大战

概述 1.1 项目简介 本次Java课程设计是做一个飞机大战的游戏,应用Swing编程,完成一个界面简洁流畅、游戏方式简单,玩起来易于上手的桌面游戏。该飞机大战项目运用的主要技术即是Swing编程中的一些窗口类库、事件监听以及贴图技术。 1.2 实…

【个人账号体系设计】偏个人功能类账号功能模块设计

本文讨论了针对以个人功能为主的业务系统的账号能力设计,包括账号管理的总体需求、关键属性和设计要点。重点在于如何通过细致的设计实现账号的有效管理和安全性,确保系统既便于用户操作又能维持管理的严密性。 文章目录 需求能力模块设计 需求能力 在进…

计算机考研❗️这些院校(含985)性价比巨高

✅厦门大学 (985) 不歧视双非,全靠实力,校园环境还贼美 ✅重庆大学 (985) 信息公开透明,复试抽签 ✅北京师范大学 (985) 不歧视本科出身,面试抽签答题。 ✅东南大学 (985) 保护第一志愿,复试抽签 ✅吉林大学 (…

安捷伦DSA90254A示波器 AgilentDSA90254A

产品简介: •高性能实验室 •2.5 GHz 带宽 •4 个模拟通道,每个通道的采样率为 20 GSa/s •每个通道的数据速率为 20 Mpts 至 1 Gpts •很低的本底噪声:100 mV/格时为 3.01 mVrms •DSA90000A 系列示波器是以 Infiniium DSO90000A 系列…

ChatGPT:人工智能的革命与未来

引言 随着人工智能技术的飞速发展,ChatGPT作为OpenAI推出的一款语言模型,已经引起了广泛的关注和讨论。它不仅改变了我们与机器交流的方式,还为众多行业的发展带来了革命性的影响。本文将深入探讨ChatGPT的技术原理、应用场景以及它对未来的…

JavaEE进阶(14)Linux基本使用和程序部署(博客系统部署)

接上次博客:JavaEE进阶(13)案例综合练习——博客系统-CSDN博客 目录 程序配置文件修改和打包 构建项目并打包 分平台配置 数据准备 上传jar包到云服务器并运行 开放端口号 验证程序 如何查看日志得到报错信息 常见问题 关于Linux基…

串的匹配算法——KMP算法

目录 一.特点 二.算法思想 三.公式证明 四.next数组及其练习 五.找规律计算next[k] 六.代码实现 一.特点 BF算法的特点是i回退,KMP算法的最大特点是i不回退,由于i不回退,所以KMP算法的时间复杂度是O(nm)。 二.算法思想 在匹配主串和子…

浅谈社会工程学攻击

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

String类,StringBuilder类,StringBuffer类

前言 String类,StringBuilder类,StringBuffer类都是java提供的定义字符串的类,下面是三种字符串类的异同介绍 String类:String类表示的字符串是是常量,一旦创建内容和长度都无法修改 StringBuilder类:St…

6个维度分析实时渲染和Webgl技术异同

在日常交流中,对Webgl技术熟悉的合作伙伴,在初次了解实时渲染技术时,都会问二者之间的异同。目前很多要求B/S架构的项目,很多在用webgl技术路线,而且这个方案在行业里比较普,业主方对这个也比较熟悉&#x…

JAVA实现图像取模

JAVA对图像取模 就是图片变成点阵 原图 取模效果图 代码如下: public static void main(String[] args) throws IOException {try {// 读取图像文件BufferedImage image ImageIO.read(new File("C:/Users/xiaol/Desktop/img/0.jpg"));// 定义阈值&am…

冬去春来天气阴晴不定 美食拿捏味蕾安稳换季

俗话说“春打六九头”,3月虽然已经入春,但是天气依然是凉飕飕的 ,冬天春天的换季期,因为天气的变化,尤为痛苦。但是来到了换季期,天气也不总是那么稳定,随着气温的起伏,我们的食欲也…

Vue项目实战--空间论坛(1)

环境准备 安装好node.js,Vue后 添加插件 router---路由,多页面的应用 vuex---在多个组件之间维护同一个数据 添加依赖 bootstrap---美工 popperjs/core vue项目介绍 views-----对应vue文件,页面 router-----路由,页面,c…

leetCode刷题 4.寻找两个正序数组的中位数

目录 1. 思路 2. 解题方法 3. 复杂度 4. Code 题目: 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1: 输入&…

1分钟带你搞定Python函数分类

python语言中,函数可以分为内置函数、自定义函数、有参数函数、无参数函数、有名字函数和匿名函数。其中,内置函数可以直接使用,自定义函数需要根据需求定义。有参数函数在定义时需要指定参数,调用时传入参数。无参数函数在定义时…

git远程仓库使用

赋值这个地址clone 克隆之后 cd slam_oncloud/ git remote add chenxnew ssh://git192.168.3.40:1022/chenxiao/slam_oncloud.git 查看一下 linuxchenxiao:/media/linux/mydisk/cloud_slam/slam_oncloud$ git remote add chenxnew ssh://git192.168.3.40:1022/chenxiao/sla…

记录一次Dubbo远程调用的错误

情景:有一个生成PDF的接口中,如下: GET Path("/getPDF") public void getPDF(QueryParam("id") String id, Context HttpServletResponse response) {………… }之前实现的代码都写在了Controller里面,代码里…

北斗卫星助力无人机在沙漠播种,促进沙漠治理

北斗卫星助力无人机在沙漠播种,促进沙漠治理 近年来,随着科技的不断发展,北斗卫星和无人机技术的结合被广泛应用于沙漠治理领域,为解决沙漠化问题提供了全新的思路和解决方案。 近日,黄河“几字弯”北岸的内蒙古自治…

word打字后面的字消失是怎么回事

在使用Microsoft Word进行文档编辑时,很多用户可能会遇到一个令人困惑的问题:当在文档中打字时,后面的字却莫名其妙地消失了。这种情况不仅影响了编辑效率,还可能导致重要数据的丢失。那么,这一现象背后的原因是什么&a…