使用缓存包将 pip 包安装到 virtualenv 的正确方法是什么?我试过设置--timeout=360
and --use-mirrors
,但是 pypi 的性能太不稳定了,它经常挂起或断开连接,使部署成为一个废话。
所以,我的计划是使用 --download-cache 选项来预下载所有包档案(但不安装它们),例如:
pip install --upgrade --timeout=120 --use-mirrors --no-install --download-cache /usr/local/pip/cache -r pip-requirements.txt
然后在安装到 virtualenv 的过程中指定这个缓存位置,例如:
virtualenv /usr/local/myapp/.env
. /usr/local/myapp/.env/bin/activate; pip install --no-download --download-cache /usr/local/pip/cache -r pip-requirements.txt
deactivate
创建缓存非常令人沮丧,因为 pip 似乎不确定地将下载的包保存到缓存目录。具体来说,它拒绝缓存Django==1.4.0
,说“这个要求已经得到满足”,所以我不得不使用--force-reinstall
.
使用缓存安装目前是我卡住的地方。运行上面的命令给了我错误:
Could not install requirement Django==1.4.0 (from -r pip-requirements.txt (line 1)) because source folder /usr/local/myapp/.env/build/Django does not exist (perhaps --no-download was used without first running an equivalent install with --no-install?)
Storing complete log in /home/chris/.pip/pip.log
这是什么意思?
文件:
http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2FD%2FDjango%2FDjango-1.4.tar.gz
http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2FD%2FDjango%2FDjango-1.4.tar.gz.content-type
肯定存在于缓存目录中,我使用了该--no-install
选项。
我究竟做错了什么?