开发Openstack相关项目的时候经常会自己搭建测试环境,搭建测试环境少不了下载pip包,但是身在天朝,下载pipy的包总是会断开,速度非常慢,经常变更环境的同学一定深受此害,所以我决定在最近一次性解决这个问题。
于是开始着手研究pipy的东西,发现有一个比较简单的方法可以按照固定的版本缓存本地的pip包。
搭建PIP源
首先,无疑先要有个Apache环境,建立一个叫pip的目录,存放所有的pip安装包。
搭建源的方法有两种,一种是直接将公网的pip源下载到本地,之后用crontab定期同步就可以了,这样的好处是大而全,不好的是对于网络带宽较小的,简直就是拉锯战。
这里介绍的一种方法可能更适合于个人开发者,就是把所有的requirementst的内容全部集中起来,然后利用pip download下来做成源。
这是一个下载Pip包的脚本,我暂且称之为download.sh
#!/bin/bash
PIP_REQUIRE=”pip-requires”
CACHE_PATH=”/opt/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
其中Cache_Path为当前pip包存放的位置
下面我们配置apache
<VirtualHost *:80>
ServerAdmin jimjiang@gmail.com
ServerName test.jimflying.com
DocumentRoot /opt
<Directory /opt>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ErrorLog logs/mirrors-error_log
CustomLog logs/mirrors-access_log common
</VirtualHost>
配置完apache以后服务器端完成了
现在开始配置客户端
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
这时候再pip install -r requirements的时候速度会变得非常快