使用 docker + devpi 搭建本地 pypi 源

前一段时间开发须要常常使用 pip 下载,虽然把 pip 源改为了国内源,但我对速度仍是不满意,更为重要的是集成
测试环境是离线的,要在集成测试环境开发显然须要搭建本身的本地 pip 源。在使用 devpi 以前我曾使用过 pip2pi,但有个 bug 致使离线环境下的 tox 命令老是失败,因此最后采用 devpi 搭建 pip 源。这里使用 docker 部署,方便又快速,若是不当心弄崩了也只须要从新运行 docker 容器就行了。若是你的环境没有安装 docker 能够自行搜素安装方法,好比 docker 社区的文档 install docker。若是你是 Centos 用户,可使用如下方法安装docker

sudo yum update
sudo yum -y install docker
sudo systemctl enable docker
sudo systemctl start docker

接下来使用使用 docker 部署一个 Python 本地镜像源,咱们可使用 docker hub 上已有的镜像,我这里选择的是
muccg/devpi 这个镜像vim

# 设置 devpi 服务器管理员密码
DEVPI_PASSWORD = 123

mkdir -p /src/docker/devpi
mkdir /tmp/wheelhouse

docker run -d --name devpi \
    --publish 3141:3141 \
    --volume /tmp/wheelhouse:/wheelhouse
    --volume /srv/docker/devpi:/data \
    --env=DEVPI_PASSWORD=$DEVPI_PASSWORD \
    --restart always \
    muccg/devpi

接着先在本地下载好所需的wheel包,requirements.txt文件内容即为咱们须要的 Python 库列表bash

pip wheel --wheel-dir /tmp/wheelhouse -r requirements.txt

若是从 pip 源下载的库已是 wheel 包的话文件将会被直接放在 /tmp/wheelhouse 内,若是是
tar 包,pip 会先 build 出 wheel 包,这可能须要一些时间。下载完成后 wheelhouse 内容相似
服务器

ll /tmp/wheelhouse
total 524K
-rwxrwxrwx 1 rookie rookie 155K Apr  6 23:40 certifi-2019.3.9-py2.py3-none-any.whl
-rwxrwxrwx 1 rookie rookie 131K Apr  6 23:40 chardet-3.0.4-py2.py3-none-any.whl
-rwxrwxrwx 1 rookie rookie  58K Apr  6 23:40 idna-2.8-py2.py3-none-any.whl
-rwxrwxrwx 1 rookie rookie  57K Apr  6 23:40 requests-2.21.0-py2.py3-none-any.whl
-rwxrwxrwx 1 rookie rookie 116K Apr  6 23:40 urllib3-1.24.1-py2.py3-none-any.whl

下载完成后若是本地环境安装了devpi客户端,能够直接上传 wheel 包,不过因为咱们在建立容器时已经
wheelhouse 文件夹挂载进去,也能够在在容器里直接操做微信

# 进入容器
docker exec -it -u root devpi bash

# 登录并上传
devpi use http://<host_ip>:3141/root/public --set-cfg
devpi login root 123
devpi upload --from-dir /wheelhouse

上传完成后可使用 http://<host_ip>:3141 查看 pip 本地源服务器状态。
若要临时使用可使用 pip install 的 --index--trusted-host 选项测试

pip install --index http://<host_ip>:3141/root/public/+simple/ \
            --trusted-host <host_ip>

或者修改 pip.conf 文件永久使用ui

# vim ~/.pip/pip.conf
[global]
index_url = http://<host_ip>:3141/root/public/+simple/
trusted-host = <host_ip>
[search]
index = http://<host_ip>:3141/root/public/

最后,欢迎关注个人僵尸微信公众号 :) CodeWar 图片描述url

相关文章
相关标签/搜索