IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 发布自己的Python包(Pypi) -> 正文阅读

[Python知识库]发布自己的Python包(Pypi)

发布自己的Python包(Pypi)

我们经常使用 Pypi 来安装包,但是有时候我们也想要发布自己的 Pypi 包,有可能我们写了一个特别牛的包,也有可能我们只是想使用自己常用的一些轮子,可能这是我们日常编码中很常用的一些轮子,我们在不同工程目录、不同设备上都会频繁使用的一些接口,可能我们自己对这些自己常用的接口很熟悉,但是却因为环境的迁移而需要重复地实现,这时我们就可以发布一个自己的 Pypi 包,在环境迁移时使用熟悉的轮子只需要 pip install *** 即可。

就算这些轮子我们可能实现的没有那么完美,”不足为外人道也“,但却是我们最熟悉的,接口早已了然于心,因此这样使用起来会很方便。

发布

注册Pypi账号

没什么好多说的,出奇的简单,不需要任何多余的东西,邮箱、用户名、密码即可。链接如下:

https://pypi.org/

开发自己的包

假设我想发布一个包,里面有我们常用的一些使用函数,包名称为 SongUtils,我们先完成功能的开发,都在 SongUtils 目录下,得到目录结构如下:

├── SongUtils
│   ├── AVAUtils.py
│   ├── ImgUtils.py
│   ├── MetricUtils.py
│   ├── README.md
│   └── __init__.py

__init__ 文件是必须的,这是一个package的象征,可以什么都不写,但必须有。

准备setup.py

setup.py 是构建我们的Python包的关键,它的位置与我们的整个工程目录同级,包含了我们这个包的一些关键信息和依赖等,简单的可以参考下面笔者第一次发布包时的 setup.py 文件内容,其中各项看其名称即可一目了然,更详细的各项参数的含义网上其他博客也有介绍,在此不再赘述:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from setuptools import setup, find_packages            #这个包没有的可以pip一下

setup(
    name = "SongUtils",      #这里是pip项目发布的名称
    version = "0.0.1",  #版本号,数值大的会优先被pip
    keywords = ["pip", "SongUtils"],			# 关键字
    description = "Junjie's private utils.",	# 描述
    long_description = "Junjie's private utils.",
    license = "MIT Licence",		# 许可证

    url = "https://github.com/Adenialzz/SongUtils",     #项目相关文件地址,一般是github项目地址即可
    author = "Adenialzz",			# 作者
    author_email = "********@***.com",

    packages = find_packages(),
    include_package_data = True,
    platforms = "any",
    install_requires = ["numpy", "pillow"]          #这个项目依赖的第三方库
)

本地打包

完成 setup.py 文件后,我们的目录树如下:

├── SongUtils
│   ├── AVAUtils.py
│   ├── ImgUtils.py
│   ├── MetricUtils.py
│   ├── README.md
│   └── __init__.py
└── setup.py

然后在 setup.py 所在目录下,我们运行它来将项目本地打包:

python setup.py sdist  

没有问题的话,在打包之后我们会得到如下目录树:

├── SongUtils
│   ├── AVAUtils.py
│   ├── ImgUtils.py
│   ├── MetricUtils.py
│   ├── README.md
│   └── __init__.py
├── SongUtils.egg-info
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   ├── dependency_links.txt
│   ├── requires.txt
│   └── top_level.txt
├── dist
│   └── SongUtils-0.0.1.tar.gz
└── setup.py

上传到Pypi服务器

首先在setup.py这一级的目录下建立一个系统文件 .pypirc 内容如下:

[distutils]
index-servers = pypi

[pypi]
username:你的PyPi用户名
password:你的PyPi密码

这里的用户名密码,就是我们第一步注册时的账号。

然后安装一个上传的工具来上传即可:

pip install twine
twine upload dist/SongUtils-0.0.1.tar.gz

验证

至此我们整个Python包的发布过程就已经完成了,我们可以(在其他机器)安装来验证一下:

pip install SongUtils

然后准备一个测试文件:

# test.py
import SongUtils

# Call you functions to evaluate.

在测试文件中调用自己包中的函数,看测试是否正常工作:

python test.py

删除

如果你想删除自己的 Pypi 包,只需要登陆到自己的 Pypi 网站的账户,并进入到自己想要删除的项目,然后选择对应版本,点击 Optins -> Delete 即可,过程中会要求你输入删除的版本号来防止误删除,在删除后也会给你的邮箱发送邮件提醒。

但是,这不是一个好主意,因为前一个软件包的所有用户都会看到他们的安装失败。

如果要弃用程序包,可以执行的操作是使用指向新程序包的README发布最后一个发行版。有人为python-cli-ui做了那个,它被替换为cli-ui

你也可以:

  • setup.py运行时添加警告
  • 或在导入时
  • 或者用一个取决于新名称的虚拟包替换包。

说明

这个过程只是一个简单的 Python 包的发布过程,在过程中其实有许多需要注意的地方,比如 setup.py 文件应当写的更加规范,整个包内的代码也应当更加规范,应当有一个比较好的 Description 或者 README.md 文档等等。这就留在以后有机会再说吧。

扩展阅读:

python打包发布pypi踩坑记(最新贴心版本,认真对待自己的库)

Ref:

https://www.cnblogs.com/suoyike1001/p/15216699.html

https://cloud.tencent.com/developer/ask/208868

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:24:55  更:2022-03-08 22:26:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:25:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码