发布代码到 PyPI

简介: 发布代码到 PyPI

写 Python 程序的童鞋们都知道安装模块使用 pip install xxxx 命令,那么知道怎样将自己的代码发布到 PyPI 让全世界 Python 程序员使用吗?下面让我们开始一起学一下将代码上传到 PyPI 吧...'


PyPI 概念


PyPI 全称 Python Package Index ,是一个 Python 的模块管理工具。提供对 Python 模块的查找、下载、安装、卸载等操作。


项目结构


首先让我们来看看上传 PyPI 需要的项目结构,然后再慢慢填代码。


image.png


各个文件的详细介绍如下:


  1. simple_pip_upload:项目的根目录
  2. example:模块名,代码写法: from example import math
  3. __init__.py:这里可以写代码,也可以是空文件
  4. math.py:代码模块,可以有多个 py 文件
  5. setup.py:setuptools 的构建脚本
  6. README.md:关于项目的描述,描述如何安装、使用等情况
  7. LICENSE:开源的 LICENSE,如:Apache License 2.0,MIT License 等等,在(https://choosealicense.com/)选择,这里选择 MIT License


编写代码


编写 math.py


math.py 里面只写了简单的加减乘除代码


def add(i, y):
    print(str(i) + " + " + str(y) + " = " + str((i + y)))
def sub(i, y):
    print(str(i) + " - " + str(y) + " = " + str((i - y)))
def mul(i, y):
    print(str(i) + " * " + str(y) + " = " + str((i * y)))
def div(i, y):
    print(str(i) + " / " + str(y) + " = " + str((i / y)))


编写 setup.py


setup.py 是一个 setuptools 的构建脚本,其中包含了项目和代码文件的信息


import setuptools
setuptools.setup(
    name="simple_pip_upload",
    version="0.0.2",
    author="moumoubaimifan",
    author_email="example@example.com",
    description="一个简单的四则运算 PyPI 上传例子",
    long_description="一个简单的 PyPI 上传测试",
    long_description_content_type="text/markdown",
    url="https://github.com/JustDoPython/justdopython.github.io",
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
)


setuptools.setup 的参数信息如下:


  • name:项目的名称
  • version:项目的版本
  • author,author_email:作者和作者邮件
  • description:项目的简单介绍
  • long_description:项目的详细介绍
  • long_description_content_type:表示用哪种方式显示long_description,一般是 md 方式
  • url:项目的主页地址
  • packages:项目中包含的子包,find_packages() 是自动发现根目录中的所有的子包。
  • classifiers:其他信息,这里写了使用 Python3,MIT License许可证,不依赖操作系统。


编译


在上传代码之前,我们需要将代码编译,编译代码需要使用 setuptools 和 wheel 模块,安装它们


pip3 install --user --upgrade setuptools wheel


安装完成后使用如下命令编译


python3 setup.py sdist bdist_wheel


编译之后会在项目中会生成多个文件夹,其中一个 dist 文件夹中包含 simple_pip_upload-0.0.2.tar.gz 源码包 和 simple_pip_upload-0.0.2-py3-none-any.whl 文件


dist\
    simple_pip_upload-0.0.2.tar.gz
    simple_pip_upload-0.0.2-py3-none-any.whl


上传


到这里就只剩下上传代码了,我们需要注册(https://pypi.org/account/register/)账号和创建一个 token(https://pypi.org/manage/account/token/),并保存到 $HOME/.pypirc 文件里面。


image.png


PyPI 上传使用的是 Twine 模块,安装它


python3 -m pip install --user --upgrade twine


安装完成之后,使用如下命令上传 dist 文件夹里面的文件


python3 -m twine upload --repository pypi dist/*


image.png


最后让我们在网站(https://pypi.org/)上查询 simple-pip-upload 项目是否被上传上去



image.png


使用模块


使用 pip 命令安装 simple-pip-upload 项目


pip3 install simple-pip-upload


在 Python 终端中使用 simple-pip-upload 项目


>>> from example import math
>>> math.add(1,2)
1 + 2 = 3
>>> math.sub(5,2)
5 - 2 = 3
>>>


总结

将一个项目发布到 PyPI 很简单,就是步骤繁琐了一些。大家学会了吗?


参考

https://packaging.python.org/tutorials/packaging-projects/

目录
相关文章
|
C++
基于Qt的简易聊天室设计与实现
基于Qt的简易聊天室设计与实现
1049 1
|
移动开发 JavaScript 小程序
从入门到实践:Uni-app跨平台开发与应用
从入门到实践:Uni-app跨平台开发与应用
1026 1
|
Java 数据库
Springboot 多数据源动态切换 以AOP切点方式实现
Springboot 多数据源动态切换 以AOP切点方式实现
729 0
Springboot 多数据源动态切换 以AOP切点方式实现
|
7月前
|
关系型数据库 MySQL 数据库
什么是事务以及事务的四大特性?
事务是数据库操作的基本单元,具有ACID四大特性:原子性、一致性、隔离性、持久性。它确保数据的正确性与完整性。并发事务可能引发脏读、不可重复读、幻读等问题,数据库通过不同隔离级别(如读未提交、读已提交、可重复读、串行化)加以解决。MySQL默认使用可重复读级别,兼顾性能与数据一致性需求。
570 3
|
机器学习/深度学习 算法 数据可视化
机器学习模型中特征贡献度分析:预测贡献与错误贡献
本文将探讨特征重要性与特征有效性之间的关系,并引入两个关键概念:预测贡献度和错误贡献度。
1099 3
|
Java Shell API
实战教程:如何将自己的Python包发布到PyPI上
实战教程:如何将自己的Python包发布到PyPI上
4097 0
实战教程:如何将自己的Python包发布到PyPI上
|
机器学习/深度学习 API Python
阿里云百炼上线Qwen2.5-Turbo模型,可支持100万超长上下文
Qwen2.5-Turbo已上线,支持100万超长上下文,相当于100万个英文单词或150万个汉字。该模型在多个长文本任务评测集中表现出色,超越GPT-4,同时在推理速度上实现4.3倍提升。限时免费赠送1000万tokens额度,欢迎体验。
5056 0
|
机器学习/深度学习 人工智能 边缘计算
针对资源受限设备的 AI Native 应用轻量化微调技术
【8月更文第2天】随着人工智能(AI)技术的飞速发展,越来越多的应用程序开始在边缘计算和移动设备上部署机器学习模型。然而,这些设备通常具有有限的计算能力和存储空间。为了克服这些限制,本文将介绍一种针对资源受限设备的轻量化微调技术,旨在提高模型性能同时降低计算成本。
635 1
|
SQL 关系型数据库 MySQL
qt登录界面简单制作,是真的保姆级别了!!!
qt登录界面简单制作,是真的保姆级别了!!!
|
人工智能 数据可视化 API
Dify-生成式 AI 应用创新引擎,本地搭建以及使用
Dify-生成式 AI 应用创新引擎,本地搭建以及使用
5737 1