如何将自己写的模块上传到pypi

作者:古明地盆 时间:2022-06-19 10:47:06 

目录
  • 楔子

  • 上传模块至pypi

    • 编写模块

    • 编译

    • 上传

楔子

我们在安装第三方包的时候,直接一个pip install xxx命令就搞定了,然后pip会去pypi上寻找我们要安装的包,然后下载下来。

而pypi(Python Package Index )你可以看成是官方维护的一个大仓库,专门用来存储世界各地的程序员编写的第三方模块。我们使用pip进行安装的时候就会去这个仓库里面找,找到了进行下载,找不到就提示不存在。

当然我们在安装的时候还可以指定清华源、豆瓣源,因为pypi在国外,下载有时候比较慢,而一旦指定了国内的源,那么就不会去pypi上下载了,所以你可以看成国内也有仓库,专门负责搬运pypi里面的内容。

上传模块至pypi

总共分为三步:编写模块、编译模块、上传模块。

编写模块

我们看一下要上传到pypi的模块长什么样子。

如何将自己写的模块上传到pypi

  • hanser-module-upload:项目的根目录

  • hanser:模块名,我们后面可以使用from hanser import xxx,或者import hanser

  • hanser下面的两个py文件:相应的代码

  • LICENSE:开源的 LICENSE,如:Apache License 2.0,MIT License 等等

  • README.md:关于项目的描述,描述如何安装、使用等情况

  • setup.py:setuptools 的构建脚本

然后我们看看代码长什么样子。


# calc.py
def add(x: int, y: int) -> int:
return x + y

def sub(x: int, y: int) -> int:
return x - y

# __init__.py
from .calc import add, sub

然后最重要的就是编写setup.py。


# setup.py 是一个 setuptools 的构建脚本,其中包含了项目和代码文件的信息
# 如果没有需要先安装,pip install setuptools
import setuptools

setuptools.setup(
# 项目的名称
name="anser-module-upload",
#项目的版本
version="0.0.1",
# 项目的作者
author="布诺妮亚",
# 作者的邮箱
author_email="hanser@baka.com",
# 项目描述
description="简单的加减运算上传测试",
# 项目的长描述
long_description="简单的加减运算上传测试",
# 以哪种文本格式显示长描述
long_description_content_type="text/markdown", # 所需要的依赖
install_requires=[], # 比如["flask>=0.10"]
# 项目主页
url="https://www.baidu.com",
# 项目中包含的子包,find_packages() 是自动发现根目录中的所有的子包。
packages=setuptools.find_packages(),
# 其他信息,这里写了使用 Python3,MIT License许可证,不依赖操作系统。
classifiers=[
 "Programming Language :: Python :: 3",
 "License :: OSI Approved :: MIT License",
 "Operating System :: OS Independent",
],
)

编译

在上传代码之前,我们需要将代码编译。除了setuptools之外,我们还需要一个模块wheel,如果没有则需要安装。

pip install --user --upgrade setuptools wheel

然后对我们的setup.py进行编译。

python setup.py sdist bdist_wheel

编译成功之后会在项目中生成多个目录,其中有一个dist目录是我们需要上传的。

如何将自己写的模块上传到pypi

上传

然后就是上传了,我们需要前往(https://pypi.org/account/register/)注册一个账号,然后再安装一个模块:twine,因为上传需要使用到它。

pip install --user --upgrade twine

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

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

如何将自己写的模块上传到pypi

我们看到上传成功,下面去页面看一下。

如何将自己写的模块上传到pypi

注意:这里为了区分,我们把根目录名和模块名取得不一样,我们需要pip install hanser-module-upload,然后在site-packages下面会有一个hanser目录,也就是我们所使用的模块。但是一般情况下,这两者都是一样的。比如:我们安装pandas,那么得到的模块也叫做pandas。

下面就来试一试吧:

如何将自己写的模块上传到pypi

成功安装,当然也是可以使用的。

如何将自己写的模块上传到pypi

以后如果我们自己写了一个比较不错的模块的时候,就可以发布到pypi上面。

来源:https://www.cnblogs.com/traditional/p/9357501.html

标签:python,模块,pypi
0
投稿

猜你喜欢

  • 如何制作一个从Access数据库中读取记录的下拉菜单?

    2010-06-29 21:23:00
  • 利用python和百度地图API实现数据地图标注的方法

    2023-01-30 11:59:43
  • Python tornado队列示例-一个并发web爬虫代码分享

    2022-03-13 12:13:55
  • Python安装Bs4的多种方法

    2023-08-07 07:35:04
  • Python semaphore evevt生产者消费者模型原理解析

    2021-11-14 12:52:39
  • Vue数据增删改查与表单验证的实现流程介绍

    2024-05-28 15:42:51
  • 详解JavaScript函数callee、call、apply的区别

    2024-05-11 10:23:21
  • Oracle导出excel数据

    2023-07-18 17:44:14
  • Python探索之Metaclass初步了解

    2023-12-22 10:25:37
  • Python机器学习之决策树

    2022-02-24 07:19:01
  • JS高阶函数原理与用法实例分析

    2024-05-09 10:36:21
  • Golang实现http server提供压缩文件下载功能

    2024-05-09 14:56:00
  • Pandas中DataFrame数据删除详情

    2023-12-18 10:40:02
  • Kears+Opencv实现简单人脸识别

    2022-06-22 05:42:06
  • PHP中过滤常用标签的正则表达式

    2024-05-03 15:35:43
  • seatunnel 2.3.1全流程部署使用教程

    2022-02-01 02:38:51
  • 如何不通过DSN访问SQL Server?

    2009-11-11 19:21:00
  • python 读取竖线分隔符的文本方法

    2023-03-12 14:45:14
  • Python编程tkinter库Canvas实现涂鸦颜色表及围棋盘示例

    2023-08-02 13:21:02
  • Python实现二分法查找及优化的示例详解

    2023-10-12 14:20:44
  • asp之家 网络编程 m.aspxhome.com