您的位置:首页 > 其它

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

2013-07-28 08:40 211 查看
背景

使用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[/code] 
此时再次运行devstack或者run_tests.sh -f -V的时候,速度应该会快很多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: