PyPi,Python Package Index,Python包索引,一般是指由Python社区维护的Python软件包仓库。
常用的PyPi源有:
官方:https://pypi.org/simple
清华:https://pypi.tuna.tsinghua.edu.cn/simple
百度:https://mirror.baidu.com/pypi/simple/
阿里:https://mirrors.aliyun.com/pypi/simple/
豆瓣:https://pypi.douban.com/simple/
中科大:https://pypi.mirrors.ustc.edu.cn/simple/
# 示例
pip install xxx -i https://pypi.tuna.tsinghua.edu.cn/simple
本文主要是在本地搭建一个PyPi索引库,即:将网络上的Python包备份到本地并进行索引管理,然后局域网内部用户通过pip
安装时指向本地镜像库,即可实现Python包的安装。
首先安装pip2pi
模块,其主要功能是将本地的模块包进行索引管理。
[root@asdfv ~]# pip3 install pip2pi
Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
Collecting pip2pi
Downloading http://mirrors.aliyun.com/pypi/packages/28/64/ad5b7479e68a503f8672fc152ecd97d5780aac86d9e93bebd5b70f38817f/pip2pi-0.8.2-py2.py3-none-any.whl
Requirement already satisfied: pip>=1.1 in /usr/local/lib/python3.8/site-packages (from pip2pi) (19.2.3)
Installing collected packages: pip2pi
Successfully installed pip2pi-0.8.2
下载模块包到本地,指定保存目录、特定模块以及下载源。
[root@asdfv ~]# pip3 download -d ./pypi_packets/ numpy --trusted-host mirrors.aliyun.com
通过dir2pi
命令创建索引链接。
dir2pi ./pypi_packets/
在Windows下执行,会报错:
ERROR linking …/…/Werkzeug-2.2.3-py3-none-any.whl to .\simple\werkzeug\Werkzeug-2.2.3-py3-none-any.whl (skipping): symbolic link privilege not held
ERROR linking …/…/zipp-3.15.0-py3-none-any.whl to .\simple\zipp\zipp-3.15.0-py3-none-any.whl (skipping): symbolic link privilege not held
解决:将simple下每个包目录中的index.html文件源码中href链接增加两级上级目录 …/…/,以供页面能访问到
sed -i "s#href='#href='../../#g" */index.html
部署Nginx或Apache HTTP,或可直接用python -m http.server 8000
来进行简单的访问测试。
浏览器访问地址:http://127.0.0.1:8000/simple/
使用pip
安装模块时,可通过-i
选项来临时指定安装源为本地镜像源;
另一种则是通过pip config set
来设置全局url,即永久指定,指向本地镜像源,后续直接pip install
即可。
# 临时指定,并安装
pip install xxx -i http://127.0.0.1:8000/simple/
# 永久指定,并安装
pip config set global.index-url http://127.0.0.1:8000/simple/
pip install xxx
若当前没有
pip
命令工具,则需要先进行安装:
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
python get-pip.py
搭建本地PyPi镜像源,主要是便于局域网内部用户安装Python模块。配置流程不算复杂,按步进行即可。