在PyPI上发布自己的python包
最近学习了一下,发布了一个自己的pypi Python包,这里我大致分享如何发布自己的Pypi包一般过程。
参考文章01:
https://blog.csdn.net/weixin_37543731/article/details/101192428
0 需求分析
我需要讲我写的myPrint()函数公布给别人用,别人下载我的xiaoTangPypi包,然后可以调用myPrint()函数
1 注册 PyPI 测试账号
注册地址:https://test.pypi.org/account/register/
2 安装环境
先确保已经安装了最新版本的 setuptools, wheel, twine
pip install --user --upgrade setuptools wheel twine
3 创建项目包myPypiTest
目录树结构:
F:.
│ README.md
│ setup.py
│
└─xiaoTangPypixiaoTangTest.py__init__.py
3.1 创建 setup.py
setup.py 是 setuptools 的构建脚本,告知 setuptools 包的名称和版本,以及哪些文件将被打包。
在项目根目录新建文件 setup.py ,复制黏贴如下代码到 setup.py:
import setuptoolswith open("README.md", "r",encoding='utf-8') as fh:long_description = fh.read()setuptools.setup(name="xiaoTangPypi",version="0.0.1",author="xiaoTang",author_email="123456@gmail.com",description="Simple test example",long_description=long_description,long_description_content_type="text/markdown",url="https://github.com/taw19960426/-Speech-signal-processing-experiment-tutorial-_python.git",packages=setuptools.find_packages(),classifiers=["Programming Language :: Python :: 3","License :: OSI Approved :: MIT License","Operating System :: OS Independent",],python_requires='>=3.6',
)
3.2 创建__init__.py
_init_.py 是包内部模块对外的导出接口,或者说,当使用 import 时的导入对象。 我们把需要提供外部应用使用的函数,数据,类等都放在这个文件里。当然,并非一定要此文件里实现,import 进来的模块也会被导出,例如下面的
xiaoTangTest.py下的myPrint()函数。
在项目根目录新建文件夹xiaoTangPypi,xiaoTangPypi文件夹下存放__init__.py和我写的函数包xiaoTangTest.py,目录树如下:
_init_.py
该文件就一个目的,我把要调用的函数声明在这里,如果涉及到命令行传参,参考文章:
https://blog.csdn.net/weixin_37543731/article/details/101192428
#!/usr/bin/env python3
# _*_ coding: utf-8 _*_
from .xiaoTangTest import *def myPrint():return xiaoTang()
xiaoTangTest
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@File :xiaoTangTest.py
@Author :唐维康
@Date :2022/3/25 10:52
@功能:
@用法:
'''
def xiaoTang():print("**********hello xiaoTang!!!*********")
4 打包项目包
首先切换到setup.py所在的目录:cd ***
然后执行:
python setup.py sdist bdist_wheel
运行后,项目目录结构如下:
F:.
│ README.md
│ setup.py
│
├─build
│ ├─bdist.win-amd64
│ └─lib
│ └─xiaoTangPypi
│ xiaoTangTest.py
│ __init__.py
│
├─dist
│ xiaoTangPypi-0.0.1-py3-none-any.whl
│ xiaoTangPypi-0.0.1.tar.gz
│
├─xiaoTangPypi
│ xiaoTangTest.py
│ __init__.py
│
└─xiaoTangPypi.egg-infodependency_links.txtPKG-INFOSOURCES.txttop_level.txt
5 上传和安装
5.1 上传
期间会让你输入Pypi的账户和密码
python -m twine upload dist/*
上传完了以后,Pypi可以看到的
5.2 下载
pip install xiaoTangPypi -i https://pypi.tuna.tsinghua.edu.cn/simple
简单写个测试代码
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@File :test01.py
@Author :唐维康
@Date :2022/3/25 16:40
@功能:
@用法:
'''
import xiaoTangPypixiaoTangPypi.myPrint()
在PyPI上发布自己的python包相关推荐
- pypi.python.org_在Pypi上发布自己的Python包
使用Python编程的都知道,Python的包安装非常的方便,一般都是可以pip来安装搞定: sudo pip install 最近因为项目上的需要,发布了一个自己的pypi Python包,这里我大 ...
- 在pypi上发布python包详细教程
使用Python编程中Python的包安装非常方便,一般都是可以pip来安装搞定:pip install <package name>,我们自己写的python也可以发布在pypi上,很简 ...
- 发布自己的Python包(Pypi)
发布自己的Python包(Pypi) 我们经常使用 Pypi 来安装包,但是有时候我们也想要发布自己的 Pypi 包,有可能我们写了一个特别牛的包,也有可能我们只是想使用自己常用的一些轮子,可能这是我 ...
- 【Python】如何在PyPI上发布自定义软件包
1. 引言 在Python中我们经常使用pip来安装第三方Python软件包,其实我们每个人都可以免费地将自己写的Python包发布到PyPI上,供他人来通过pip进行安装. 在本文中,我们将从一步一 ...
- 如何系统地自学python100天_Github上发布了一个Python学习秘笈,从萌新到王者的100天Python学习之旅...
北京千锋互联科技有限公司成都分公司骆昊(jackfrued)在Github上发布了一个Python学习秘笈,从萌新到王者的100天Python学习之旅. 简单的说,Python是一个"优雅& ...
- python各种包安装顺序_史上最全的Python包管理工具:Anaconda教程
事实上Anaconda 和 Jupyter notebook已成为数据分析的标准环境. 简单来说,Anaconda是包管理器和环境管理器,Jupyter notebook 可以将数据分析的代码.图像和 ...
- python 发布包_如何将自己的Python包发布到PyPI
以前写过一篇类似的文章: 如何打包自己的项目并且发布到pypi上,不过由于PyPI进行了一些更新,因此旧方法不大适用了.趁端午有时间,想把haipproxy的客户端发布到PyPI,以改进用户体验,因此 ...
- python自己写包_如何将自己的Python包发布到PyPI
以前写过一篇类似的文章: 如何打包自己的项目并且发布到pypi上,不过由于PyPI进行了一些更新,因此旧方法不大适用了.趁端午有时间,想把haipproxy的客户端发布到PyPI,以改进用户体验,因此 ...
- python包发布到Pypi官网
python包发布教程 首先,我们先在Pypi注册一个账户,如图: (点register注册) 注册完毕后,我们还要安装setuptools和twine两个包 >>> pip ins ...
最新文章
- EXCEL基础篇(二)
- 面试问了这两个问题,很多人的回答都自相矛盾
- 2022博士后,新加坡国立大学 Xinchao Wang 研究组
- 英国前首相:为什么欧洲没有诞生互联网巨头?
- win10下c/c++隐藏进程
- 三篇文章了解 TiDB 技术内幕——说存储
- JavaFX Button和Scene点击事件代码示例
- else if mybatis 嵌套_新手如何书写C++代码,远离深度嵌套的if-else
- 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。
- 掘金浏览器插件安装图文教程
- vue-cli部署ngixs_nginx部署访问vue-cli搭建的项目的方法
- 鸿蒙app迁移,余承东宣布:明年3月P40首发鸿蒙系统!主流App将迁移鸿蒙
- 产品质量的基石——微软Bug管理
- python tfidf特征变换_2 python 文本特征提取 CountVectorizer, TfidfVectorizer
- 每日一题/011/线性代数/高等代数/两个上三角矩阵的乘积还是上三角矩阵
- 施乐打印机驱动程序安装(CP315/318DW)
- 创意无价,优化 百度、Bing、Duckduckgo 三大国际搜索引擎
- android 绘画笔迹回放_Android画板 半透明画笔 笔迹叠加效果
- Codec Engine 概要
- okhttp3发送https请求
热门文章
- 2017年10月08日普及组 世界语
- Luogu P5244 [USACO2019Feb Platinum] Mowing Mischief (动态规划、决策单调性)
- BZOJ 1500 Luogu P2042 [NOI2005] 维护数列 (Splay)
- mysql 怎么实现组内排名_MySQL 实现排名(分组排名)
- 20211108 微分跟踪器
- 我对模板模式和策略模式的理解
- Canvas动画基础之碰撞检测
- 关于Authorware的十二种使用技巧
- Shell 去掉文本中的空格
- Fragment使用LocalBroadcastManager接收广播消息