文章目录
- 创建和上传自己的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之前,可以进行本地验证以确保您的包能够正常工作。
- 上一步中,使用python setup.py sdist或python setup.py bdist_wheel命令构建分发文件。这将生成一个或多个分发文件,例如.tar.gz文件或.whl文件。
- 使用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