pip私有源服务搭建
在服务器有网络的情况下,直接配置公开的源,速度已经非常快,也很方便。然而有些情况下服务器不方便安装网络,使用python安装包就变得非常麻烦,下载文件然后上传很折腾,如果团队这么做效率很低,这时就需要搭建私有的pip源。
网上看了一些文章基本都是在服务器直接安装配置,本文采用docker的方式部署,操作简单,配置少,经过验证效果挺好的。
服务安装
采用docker的部署方式,减少环境依赖和命令配置。
docker pull muccg/devpi:latest
启动docker或者编写docker-compose.yaml文件,这里直接写配置文件比较方便
version: "3"
services:
devpi-lib:
container_name: devpi-lib
image: muccg/devpi:latest
expose:
- 11023
ports:
- "11023:11023"
- "3141:3141"
environment:
- DEVPISERVER_HOST=ip
- DEVPISERVER_PORT=11023
- DEVPISERVER_ROOT_PASSWORD=password
- DEVPISERVER_USER=cj
- DEVPISERVER_PASSWORD=password
- DEVPISERVER_MIRROR_INDEX=pypi # 指定镜像index
- DEVPISERVER_LIB_INDEX=devpi # 指定上传index
- SOURCE_MIRROR_URL=https://pypi.tuna.tsinghua.edu.cn/simple # 指定镜像源
restart: always
volumes:
- /mnt/hdd2/pypi:/var/lib/devpi
需要指定上面的ip,多起一个端口11023,以防后续使用。挂载一个目录用于后续文件交换。重要的配置为SOURCE_MIRROR_URL,对于没有的安装包从这个地址下载。容器启动后服务的端口为3141,需要配置着个端口。
启动服务:
docker-compose -f docker-compose.yaml up -d
测试安装包
需要改上面的ip地址,可以看到正常使用了。
pip install transformers -i http://ip:3141/root/pypi --trusted-host ip
第一次安装包,速度非常慢,这是因为需要从安装源下载,后续再安装对应的包,直接从服务器缓存拉取,速度非常快。不过速度太慢也有办法处理,那就是在服务端下载好包文件,然后upload到服务器上。
文件上传到pip仓库
下载安装包到上面的挂载目录/mnt/hdd2/pypi
pip wheel --wheel-dir /mnt/hdd2/pypi/ -r req.txt --cache-dir .cache/abc
准备上传文件,需要进入到容器中,对于容器不熟练的请自行查找命令。
docker exec -it container-id /bin/bash # 进入容器
devpi login root # 无密码直接回车
devpi upload --from-dir /var/lib/devpi #可以看到上传
之后再测试,安装包的速度可以达到几十上百MB。
配置反向代理
经过多用户测试,并发很低,很多情况下可能会报错,应该是服务无法处理并发,配置nginx反向代理可以解决,不过先搭建好了,凑合用等用来经常出问题再配置吧。如果你碰到这个问题请自行配置nginx代理。
配置默认源
创建配置文件
# vim ~/.pip/pip.conf
[global]
index_url = http://<host_ip>:3141/root/pypi/
trusted-host = <host_ip>
[search]
index = http://<host_ip>:3141/root/pypi/