如何将自己写的模块上传到pypi
作者:古明地盆 发布时间:2022-06-19 10:47:06
目录
楔子
上传模块至pypi
编写模块
编译
上传
楔子
我们在安装第三方包的时候,直接一个pip install xxx命令就搞定了,然后pip会去pypi上寻找我们要安装的包,然后下载下来。
而pypi(Python Package Index )你可以看成是官方维护的一个大仓库,专门用来存储世界各地的程序员编写的第三方模块。我们使用pip进行安装的时候就会去这个仓库里面找,找到了进行下载,找不到就提示不存在。
当然我们在安装的时候还可以指定清华源、豆瓣源,因为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目录是我们需要上传的。
上传
然后就是上传了,我们需要前往(https://pypi.org/account/register/)注册一个账号,然后再安装一个模块:twine,因为上传需要使用到它。
pip install --user --upgrade twine
安装完成之后,就可以使用如下命令上传 dist 文件夹里面的文件。
python -m twine upload --repository pypi dist/*
我们看到上传成功,下面去页面看一下。
注意:这里为了区分,我们把根目录名和模块名取得不一样,我们需要pip install hanser-module-upload,然后在site-packages下面会有一个hanser目录,也就是我们所使用的模块。但是一般情况下,这两者都是一样的。比如:我们安装pandas,那么得到的模块也叫做pandas。
下面就来试一试吧:
成功安装,当然也是可以使用的。
以后如果我们自己写了一个比较不错的模块的时候,就可以发布到pypi上面。
来源:https://www.cnblogs.com/traditional/p/9357501.html


猜你喜欢
- 本文实例讲述了Bootstrap实现前端登录页面带验证码功能。分享给大家供大家参考,具体如下:Bootstrap有自定义的验证码样式,在前端
- 1. 安装PyYAMLpip install PyYAML2. 加载yaml文件直接使用yaml.load()函数demo.yml :kin
- 1、php支持哪些数据库(拥有哪些数据库接口)Adabas D ,InterBase ,PostgreSQL ,dBase ,FrontBa
- 一、property() 函数讲解了解 @property 装饰器之前,我们首先要了解内置函数的 property()。class prop
- 如何快速的求出1到x的和呢?代码如下:NB(注意): # 后面的部分表示输出结果。class Debug: def calcul
- ckptfrom tensorflow.python import pywrap_tensorflow checkpoint_path =
- 如果你在写文章或者 Demo,为了简单,你当然可以用事件监听函数,以及那些事件对象提供的方法等。但在实际中,有一些方法和属性是有兼容性问题的
- 主要思路(1)数据选取获取数据的链接为:https://www.basketball-reference.com/获取的数据内容为:每支队伍
- 本文实例为大家分享了python网络爬虫的笔记,供大家参考,具体内容如下(一) 三种网页抓取方法1、 正则
- 前言前几天在Python交流群里边,大佬分享了一个有趣的代码,用于定时发送菜谱分享,觉得挺有意思,这里拿出来给大家分享。实现思路实现思路倒是
- 启动服务发生1067错误:1.删除datadir 下的用户数据库文件 和 日志文件 (ib_logfile0,ib_logfile1)。2.
- 我们在PyCharm安装配置Qt Designer+PyUIC教程中已配置好了PyCharm+QTDesigner+PyUIC环境这里在此基
- table估计每个跟web打过交道的人都会经常接触到,跟js结合能做出很多不错的体验。这里打算结合js做一个系列,包括一些操作和效果,虽然现
- 学习神经网络已经有一段时间,从普通的BP神经网络到LSTM长短期记忆网络都有一定的了解,但是从未系统的把整个神经网络的结构记录下来,我相信这
- MySQLTuner 下载地址:http://github.com/rackerhacker/MySQLTuner-perlMySQLTun
- 我们经常使用傅里叶变换来计算数字信号的频谱,进而分析数字信号,离散时间傅里叶变换的公式为:可是自己动手实现一遍才是最好的学习。在数字分析里面
- split()介绍函数:split()Python中有split()和os.path.split()两个函数,具体作用如下:split():
- MySQL replace函数我们经常用到,下面就为您详细介绍MySQL replace函数的用法,希望对您学习MySQL replace函
- 本文实例讲述了Python3使用requests模块实现显示下载进度的方法。分享给大家供大家参考,具体如下:一、配置request1. 相关
- 前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿遍又亿遍,久久不能离开!看着仙紫小姐姐的蹦迪视频,除了一键三连还能做什么?突发奇想