殷氏科技网站建设工作室,wordpress搜索根据范围,火车头更新wordpress,wordpress美食模板发布自己的Python包(Pypi)
我们经常使用 Pypi 来安装包#xff0c;但是有时候我们也想要发布自己的 Pypi 包#xff0c;有可能我们写了一个特别牛的包#xff0c;也有可能我们只是想使用自己常用的一些轮子#xff0c;可能这是我们日常编码中很常用的一些轮子#xff0c;…发布自己的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, #版本号数值大的会优先被pipkeywords [pip, SongUtils], # 关键字description Junjies private utils., # 描述long_description Junjies 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