如何搭建本地的PIP源提高Devstack和venv环境的安装速度

背景

使用Devstack进行研发环境搭建的时候,或者在进行单元测试创建venv环境时,总是需要从pip源进行大量安装,而因为网络问题导致无法正常安装的情况屡有发生,那么这里就介绍一下如何搭建本地的OpenStack的PIP源,并且如何在客户端正确设置来使用他们。

PIP源的搭建

首先,无疑先要有个Apache环境,建立一个叫pip的目录,存放所有的pip安装包。

搭建源的方法有两种,一种是直接将公网的pip源下载到本地,之后用crontab定期同步就可以了,这样的好处是大而全,不好的是对于网络带宽较小的,简直就是拉锯战。

这里介绍的第二种方法可能更经济实惠,我是从之前一篇源代码安装OpenStack获得的启发。基本的思路就是把所有的pip-requires和test-requires文件汇聚到一个文件,之后利用pip进行download,做到为OpenStack量身定制。

find . -name pip-requires -exec cat {} \; > pip-requires.all

find . -name test-requires -exec cat {} \; > test-requires.all

当然我们也可以把他们合并在一起,方便下载。这里建议把pip升级到最新版本之后再去下载,这里用一小段脚本去实现下载,而并没有用到pip -r的指令,因为通过实践发现,在遇到重复的pip包时候,pip会自动的停止下载。

#!/bin/bash

PIP_REQUIRE="pip-requires"
CACHE_PATH="pip"

while read LINE
do
  if [[ $LINE =~ ^[a-zA-Z] ]]
  then
    echo $LINE
    yes w | pip install $LINE --no-install -d pip -I
  fi
done < $PIP_REQUIRE

这样就完成了定制版pip源的下载。

客户端的设置

经过试验发现,如果通过本地的pip源进行安装,需要让pip和easyinstall同时指向本地pip源,否则仍然会有包从远程进行下载。具体方式如下:

vi $HOME/.pip/pip.conf

[global]
find-links = http://192.168.0.30/pip
no-index = true

vi $HOME/.pydistutils.cfg

[easy_install]
index_url = http://192.168.0.30/pip

此时再次运行devstack或者run_tests.sh -f -V的时候,速度应该会快很多。

你可能感兴趣的:(python,openstack,devstack)