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

 更新时间:2021年03月11日 15:03:38   作者:古明地盆  
这篇文章主要介绍了如何将自己写的模块上传到pypi,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下

楔子

我们在安装第三方包的时候,直接一个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上面。

以上就是如何将自己写的模块上传到pypi的详细内容,更多关于模块上传到pypi的资料请关注脚本之家其它相关文章!

相关文章

  • 浅析Python多线程下的变量问题

    浅析Python多线程下的变量问题

    这篇文章主要介绍了Python多线程下的变量问题,由于GIL的存在,Python的多线程编程问题一直是开发者中的热点话题,需要的朋友可以参考下
    2015-04-04
  • 如何解决Python中tqdm和zip一起用进度条不显示问题

    如何解决Python中tqdm和zip一起用进度条不显示问题

    这篇文章主要介绍了如何解决Python中tqdm和zip一起用进度条不显示问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • python数据写入Excel文件中的实现步骤

    python数据写入Excel文件中的实现步骤

    Python作为时下流行的语言,数据写入Excel是必要的操作,下面这篇文章主要给大家介绍了关于python数据写入Excel文件中的简单实现方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Python networkx中获取图的邻接矩阵方式

    Python networkx中获取图的邻接矩阵方式

    这篇文章主要介绍了Python networkx中获取图的邻接矩阵方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Pytorch通过保存为ONNX模型转TensorRT5的实现

    Pytorch通过保存为ONNX模型转TensorRT5的实现

    这篇文章主要介绍了Pytorch通过保存为ONNX模型转TensorRT5的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • pandas中df.groupby()方法深入讲解

    pandas中df.groupby()方法深入讲解

    在使用pandas进行数据统计分析时遇到了问题,找了很久才找到解决办法,所以下面这篇文章主要给大家介绍了关于pandas中df.groupby()方法的相关资料,需要的朋友可以参考下
    2022-12-12
  • Python机器学习应用之基于决策树算法的分类预测篇

    Python机器学习应用之基于决策树算法的分类预测篇

    所谓决策树,就是一个类似于流程图的树形结构,树内部的每一个节点代表的是对一个特征的测试,树的分支代表该特征的每一个测试结果,而树的每一个叶子节点代表一个类别。树的最高层是就是根节点
    2022-01-01
  • Python实现大文件排序的方法

    Python实现大文件排序的方法

    这篇文章主要介绍了Python大文件排序的方法,涉及Python针对文件、缓存及日期等操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Flask框架模板渲染操作简单示例

    Flask框架模板渲染操作简单示例

    这篇文章主要介绍了Flask框架模板渲染操作,结合实例形式分析了flask框架模板渲染与变量操作相关技巧,需要的朋友可以参考下
    2019-07-07
  • python的getattr和getattribute拦截内置操作实现

    python的getattr和getattribute拦截内置操作实现

    在Python中,getattr和getattribute是用于动态属性访问和自定义属性访问行为的重要工具,本文主要介绍了python的getattr和getattribute拦截内置操作实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01

最新评论