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, 只需要修改一些必要的配置就可以了

  • README.md 文件
    项目描述文件。

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=‘mypackage’: 设置包的名称为 “mypackage”。
  • version=‘0.1’: 设置包的版本号为 “0.1”。
  • packages=find_packages(): 使用 find_packages() 函数自动查找并包括所有的子包。
  • install_requires=[]: 在这里列出了该包所依赖的其他包。你可以在列表中指定需要安装的依赖项。
  • author=‘Your Name’: 设置作者名称为 “Your Name”。
  • author_email=‘youremail@example.com’: 设置作者的电子邮件地址。
  • description=‘A brief description of your package’: 提供一个简要的包描述。
  • license=‘MIT’: 指定包的许可证类型为 MIT 许可证。
  • keywords=‘sample setuptools development’: 列出包的关键字,以便搜索和分类。
  • url=‘https://github.com/yourusername/mypackage’: 提供包的源代码存储库的 URL。

通过修改这些配置信息,你可以根据自己的需求来设置和描述你的 Python 包。

注意:如果你想让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.hqwc.cn/news/520401.html

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

相关文章

第一次捡垃圾

配置 cpu e3 1225 v6 淘宝 130 显卡 p106-100(1060矿卡的特称) 咸鱼 118 内存 8g 3200频率 2 咸鱼 702140 硬盘 128g 固态 咸鱼 35 主板 ex-b150m-v3 咸鱼 110 电源 400w 咸鱼 58 4热管cpu散热器 咸鱼 28 机箱 迷你 拼多多 28 电源线 1m5 淘宝 8 pcie转m.2 拼多多 9 编程器 用…

2.类和对象-运算符重载

文章目录 运算符重载1.运算符重载2.<<运算符重载3.运算符重载4.运算符重载5.和!运算符重载6.()运算符重载 运算符重载 1.运算符重载 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string>using namespace std;class Person { public:/*类…

纯css实现太极八卦图

感觉最近好像闯鬼了&#xff0c;赶紧写个八卦图避避邪&#xff0c;开玩笑了&#xff0c;不废话&#xff0c;上菜&#xff0c;看效果上代码。 效果 代码&#xff0c;你们都是大佬&#xff0c;这里就不解释代码了 &#xff08;hover会转动喔&#xff09;。 <!DOCTYPE html&g…

【netty系列-02】深入理解socket本质和BIO底层实现

Netty系列整体栏目 内容链接地址【一】深入理解网络通信基本原理和tcp/ip协议https://zhenghuisheng.blog.csdn.net/article/details/136359640【二】深入理解Socket本质和BIOhttps://zhenghuisheng.blog.csdn.net/article/details/136549478 深入理解socket本质和bio底层实现 …

Go编译报错 link: running gcc failed: exit status 1(已解决)

背景 在对一个开源的Go程序二次开发 重新编译时 &#xff0c; 报错截图如下 报错文字如下&#xff1a;关键信息 link: running gcc failed: exit status 1 $ go build -o orchestrator-didi -i go/cmd/orchestrator/main.go go build: -i flag is deprecated # command-li…

Lego-loam 算法三维建图

运行环境 Linux&#xff1a;Ubuntu18.04ros&#xff1a;MelodicCeres Solver 2.0.0&#xff08;Ubuntu18.04安装Ceres&#xff09;PCL 1.8.1&#xff08;Ubuntu系统的PCL、Eigen卸载和安装&#xff09; 运行数据集 lego-loam 39/39 终端一&#xff1a;进入catkin_ws工作空间…

【Flink网络数据传输】OperatorChain的设计与实现

文章目录 1.OperatorChain的设计与实现2.OperatorChain的创建和初始化3.创建RecordWriterOutput 1.OperatorChain的设计与实现 OperatorChain的大致逻辑 在JobGraph对象的创建过程中&#xff0c;将链化可以连在一起的算子&#xff0c;常见的有StreamMap、StreamFilter等类型的…

字符函数

1.字符分类函数 专门做字符分类的函数&#xff0c;都包含一个头文件#include <ctype.h> islower() 是一个用于判断字符是否为小写字母的函数。 通常情况下&#xff0c;如果一个字符是小写字母&#xff0c;则 islower() 函数会返回 true 或者一个表示真的值&#xff08…

【变量提升】关于JavaScript变量提升的理解,它导致了什么问题?

&#x1f601; 作者简介&#xff1a;一名大四的学生&#xff0c;致力学习前端开发技术 ⭐️个人主页&#xff1a;夜宵饽饽的主页 ❔ 系列专栏&#xff1a;JavaScript小贴士 &#x1f450;学习格言&#xff1a;成功不是终点&#xff0c;失败也并非末日&#xff0c;最重要的是继续…

大模型笔记:最少到最多提示过程 (Least to Most prompting, LtM)

LEAST-TO-MOST PROMPTING ENABLES COMPLEX REASONING IN LARGE LANGUAGE MODELS 2023 ICLR 1 概述 进一步发展维链提示过程 (CoT prompting) 分为两个阶段&#xff1a; 第一阶段&#xff1a;向语言模型提出查询&#xff0c;将问题分解成子问题。第二阶段&#xff1a;再次向语…

Z Potentials | 星爵,他的征途不止向量数据库

纵观过去几十年的科技发展史&#xff0c;每一代新的技术架构的出现往往都伴随着新的数据范式的出现&#xff0c;也催生了多家百亿到千亿美金数据平台的诞生。如果说 2023 年科技领域的关键词是 LLM&#xff0c;那么数据库领域的关键词一定非向量数据库莫属。向量数据库是一种专…

SpringMVC拦截器和过滤器执行顺序及区别

拦截器&#xff08;Inteceptor&#xff09;和过滤器&#xff08;Filter&#xff09;执行顺序&#xff1f; 拦截器和过滤器区别&#xff1f; 1、拦截次数不同&#xff1a; 过滤器&#xff1a;一次请求只能被一个过滤器拦截一次&#xff0c;它们按照在web.xml中的声明顺序依次执…