[Python学习日记-46] Python 中第三方开源模块的安装、使用与上传自己写的模块
[如何上传自己写的模块到 PyPi](#如何上传自己写的模块到 PyPi)
简介
在前面的模块介绍和导入当中主要介绍的都是 Python 内置的一些模块,我们把它称为标准库,而这个库里面只有一百多快两百个的模块,其实对于实际的开发当中远远是不够的,所以就出现了第三方开源的模块,其实这就是众多 Python 开发者自主上传到社区,然后供大家使用,避免大家重复造轮子的现象。
而这个社区网址在这里:https://pypi.python.org/pypi 它是 Python 的开源模块库,截止2024年10月12日,已经收录了575493个来自全世界 Python 开发者贡献的模块,几乎涵盖了你想用 Python 做的任何事情。事实上每个 Python 开发者,只要注册一个账号就可以往这个平台上传你自己的模块,这样全世界的开发者都可以容易的下载并使用你的模块。
下载与安装
一、查找模块并下载
1、以 paramiko 模块为例,打开该网站:PyPI · The Python Package Index 输入模块名进行搜索
2、搜索后点击想要的模块进入
3、点击 Download files 进入下载界面,并点击后缀为 .tar.gz(其实这个后缀就是一个压缩包,可以使用解压文件打开或解压)的文件开始下载
4、下载完毕后解压该文件
5、接下来我们可以进入命令行使用 Python 对下载好的代码进行安装了
二、源码安装
1、打开命令行,进入解压好的文件目录
2、安装 setuptools 模块,源码安装的依赖模块
如果你是初次安装模块时可能会遇到 ModuleNotFoundError: No module named 'setuptools' 的报错,这是由于没有 setuptools 模块导致的,所以我们应该先安装该模块才能顺利编译安装
请使用以下命令安装 setuptools
pip install setuptools # 这里为了快捷安装好依赖环境,我们直接使用 pip 来进行安装,后面会讲到
这样就代表安装成功了
3、执行以下命令完成安装
编译源码:python setup.py build
安装源码:python setup.py install
编译源码过程中没有报错代表成功,如下图所示
安装源码过程中没有出现报错则代表成功,如下图所示
三、pip 命令安装
源码安装我们会比较少用,并且源码安装实在是太复杂了,各种依赖包还需要你自行安装,下面我们介绍一下如何直接通过 pip 命令进行安装,同样以 paramiko 模块为例,执行以下命令完成安装
pip install paramiko # paramiko 是模块名
pip 命令会自动下载模块包并完成安装。如下图所示
软件一般会被自动安装你 Python 安装目录的这个子目录里
\your_python_install_path\Lib\site-packages # 这个是 Windows 的安装路径,Linux/Mac 的安装路径大同小异
pip 命令默认会连接在国外的 Python 官方服务器下载,而速度比较慢只有十几kB,你还可以使用国内的阿里云等镜像源,数据会定期同步国外官网的开源模块资源库,速度会快好多,需要使用以下命令来完成安装
pip install -i https://mirrors.aliyun.com/pypi/simple/ paramiko --trusted-host mirrors.aliyun.com # paramiko 是模块名
- -i:后面跟的是镜像源地址
- --trusted-host:如果镜像源地址为 http 则需要加上该选项,这是为通过网站 https 安全验证用的
切换为国内镜像源后速度非常快,下面提供更多的国内镜像源
国内的镜像源:
- 阿里云:https://mirrors.aliyun.com/pypi/simple/
- 清华大学 TUNA:https://pypi.tuna.tsinghua.edu.cn/simple/
- 华为云:https://mirrors.huaweicloud.com/repository/pypi/simple
- 中国科技大学:https://mirrors.ustc.edu.cn/pypi/simple/
pip 命令介绍:
命令 | 说明 |
---|---|
install | 安装包 |
download | 下载包 |
uninstall | 卸载包 |
freeze | 按需求格式输出已安装的包 |
inspect | 检查 Python 环境 |
list | 列出已安装的包 |
show | 显示已安装包的信息 |
check | 验证已安装的包具有兼容的依赖项 |
config | 管理本地和全局配置 |
search | 在 PyPI 中搜索包 |
cache | 检查和管理 pip 的 wheel 缓存 |
index | 检查从包索引中可获取的信息 |
wheel | 根据你的需求构建 wheels |
hash | 计算包归档的哈希值 |
completion | 一个用于命令补全的辅助命令 |
debug | 显示对调试有用的信息 |
help | 显示命令的帮助 |
四、模块卸载
1、源码安装的卸载
源码安装的卸载比较复杂,需要找出全部的依赖包以及本体删除掉,安装路径默认是在 \your_python_install_path\Lib\site-packages 中,由于源码安装卸载都比较麻烦,所以不是逼不得已都不建议使用
2、pip 命令进行卸载
以 paramiko 模块为例,请使用以下命令来完成卸载
pip uninstall paramiko
卸载完成后如下如图所示
如何使用安装好的第三方开源模块
安装完毕后,我们以 paramiko 模块为例,该模块是让一个连接 linux 服务器并执行命令的模块,代码如下
python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='192.168.174.128', username='root', password='<Your root password>')
stdin, stdout, stderr = ssh.exec_command('df')
for line in stdout:
print(line,end='')
ssh.close()
代码输出如下:
如何上传自己写的模块到 PyPi
1、需要现在社区注册一个自己的账号 https://pypi.python.org/pypi
2、打包教程请参照:Python 打包用户指南
3、首先需要设计好自己的项目目录结构
<jove_test_module>/ # 项目根目录
|-- my_module.py # 代码模块
|-- README.md
|-- LICENSE
|-- setup.cfg
|-- setup.py
4、编写配置说明文件
README.md:项目描述文件,包含怎么安装、怎么使用等
LICENSE:开源 License,例如 MIT、Apache license 2.0等
setup.cfg:配置信息文件,运行 setup.py 程序打包的时候会用到里面的配置,作为 setup.py 的命令行参数,打包时会自动生成
setup.py:用于描述项目,之后打包的时候会用到这个文件。它告诉 PyPI 项目叫什么、是什么版本、依赖库有那些、支持那些操作系统、支持那些版本的 Python 上运行等等
5、编写 setup.py
python
from setuptools import setup
setup(
name='jove_test_module',
version='0.1',
py_modules=['my_module'],
description='This is a test module.',
long_description=open('README.md').read(),
author = 'jove zou',
author_email = '529507929@qq.com',
url = 'https://github.com/yourusername/your_package_name',
install_requires = [
# list of your package dependencies
],
python_requires = '>=3.6'
)
6、安装打包和上传工具
pip install -i https://mirrors.aliyun.com/pypi/simple/ setuptools wheel twine
7、对项目进行打包
需要现在命令行进入该项目的目录
然后再执行该命令
python setup.py sdist bdist_wheel
运行结果如下
其中打包好的包就在 dist 目录当中
8、创建 API token
进入账号设置页面
下拉找到 API tokens 的位置,点击 Add API token 创建 token
进入该界面,需要填写 token 名和 token 的权限范围,填写完毕后点击 Create token 就可以看到创建的 API token 了
得到 API token 后就可以愉快的上传你自己写的模块了
9、上传项目到 PyPi
执行该命令进行上传
twine upload dist/*
或
twine upload --username token --password your-api-token dist/*
命令运行后会出现 Enter your API token 提示,需要输入你上面创建的 API token,注意,token 复制下去后并不会显示,上传成功后效果如下
10、在 PyPi 上查看你上传的项目
下载下来后于上传前的项目内容对比是完全一致的