跳至主要內容

构建局域网内的 PIP 镜像

大林鸱大约 3 分钟研发工具Python

构建局域网内的 PIP 镜像

针对离线局域网的研发环境,需要构建局域网内的 PIP 镜像。整个过程分为两个阶段,第一阶段是批量下载 PIP 包构建镜像,第二阶段是下载缺失的 PIP 包,丰富镜像。

以下步骤适用于 Windows 系统。

1. 第一阶段

在本地搭建一个 PyPi 索引库,即:将网络上的 Python 包备份到本地并进行索引管理,然后局域网内部用户通过 pip 安装时指向本地镜像库,即可实现 Python 包的安装。

官方: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

1.1 安装 pip2pi

首先安装 pip2pi 模块,其主要功能是将本地的模块包进行索引管理。

pip install pip2pi

1.2 下载模块包到本地

正常情况下,你在外网机器上已经有工程,所以先将工程依赖导出到 requirements.txt 中。

pip freeze > requirements.txt

下载模块包到本地的 dir 目录中。

pip download -d dir -r requirements.txt --trusted-host mirrors.aliyun.com

在批量现在过程中,可能有一些包无法下载,这时需要手动下载。你可以把不能下载的包先从 requirements.txt 中删除,然后单独下载。

1.3 创建索引

包全部下载完成后,创建索引。

dir2pi -S ./dir

完成之后进入文件夹,双击 index.html 可以看到索引效果。

将文件夹拷贝到离线环境中,接下来在离线环境中进行配置。

1.4 使用 nginx 搭建镜像库

找到 nginx.conf 文件,修改如下几个内容:

server{
    listen 80;
    server_name 你的IP地址
    root 【拷贝进来的文件夹】的路径
}

nginx 配置没啥好说的,能够正常访问http://127.0.0.1:80/simple/即可。

1.5 使用镜像

# 临时指定,并安装
pip install xxx -i http://127.0.0.1:80/simple/

# 永久指定,并安装
pip config set global.index-url http://127.0.0.1:80/simple/
pip install xxx

2. 第二阶段

镜像库已经安装完成了,但是使用的过程中,总会缺少一些库,这个时候就行丰富镜像库的阶段。

假设缺少了 torch 库。

2.1 在外网下载 torch 库

#将库下载到dir文件夹中
pip3 download -d ./dir/ torch --trusted-host mirrors.aliyun.com

2.2 添加到索引中

将下载的 whl 文件拷贝到离线环境中,放到索引文件夹的对应位置。此时有两种情况。

  • 有老的版本

这个时候你只需要把 whl 文件放到老版本所在文件夹,之后修改文件夹下的 index.html 文件,添加新的版本文件。

  • 没有老的版本

这个时候是没有对应的文件夹的,你需要新建文件夹,然后把 whl 文件放到文件夹中,之后创建新建文件夹下的 index.html 文件,添加新的版本文件。并且修改 simple 文件夹下的 index.html 文件,添加新的包路径。

如果你不知道新建文件夹的名称,你可以在外网中先索引以下,把索引之后的文件夹拷贝 simple 中,这是对应的 index.html 文件也有了。

2.3 说明

索引之后,simple 文件夹清晰,包括 index.html 和包文件夹。index.html 文件中包含了所有的包,包文件夹中包含了对应包的所有的版本和属于包的 index.html 文件。

上次编辑于: