作者ccwang002 (亮)
看板Python
标题[心得] 加快 pip 安装重覆套件 wheel/cache
时间Fri Jul 25 21:23:36 2014
很多人都会用虚拟环境(virtualenv 或内建的 venv)
来管理不同的专案中套件相依,但有些套件其实经常被使用的,
例如科学计算几乎都要 numpy。它带有 fortran、C 代码,
还连结很多外部函数库 MKL、LAPACK、ALTAS、BLAS、ARPACK,
有时装好了也不确定是不是有正确连结到,十分费神。
或者像 ipython[all] 这样的套件,装起来可能也需要几分钟的时间。
底下算是几个加速的方式:pip cache 以及 wheel 分享给大家。
TL;DR
设定环境变数
export PIP_USE_WHEEL=true
export PIP_WHEEL_DIR="$HOME/.pip/wheel"
export PIP_DOWNLOAD_CACHE="$HOME/.pip/cache"
export PIP_FIND_LINKS="file://$PIP_WHEEL_DIR"
用 pip wheel <pkg_name> 做自己的 wheel
装套件就会先看 wheel_dir 有没有做好的 .whl
再看 cache 有没有曾经下载过
达到加速安装(但还是需要网路连线)
Cache
-----
设定 export PIP_DOWNLOAD_CACHE="$HOME/.pip/cache"
把 PyPI 上找到的套件,下载在 cache 资料夹里。
有新版本也会自动下载新的存着。
如果套件 release 就是用 wheel 格式的话也会存在 cache。
要注意 cache 档名包含网址,有做 PyPI mirror 的话会存成不同档案
Wheel
-----
算是目前推广中的格式,不少套件都有采用了。
它是 binary release,所以少了安装的过程会快很多,
针对 Python 版本、OSX/Win/Linux 32/64 制作专门的 .whl
Linux wheel 因目前规格不处理 distro 而很少能直接下载用,
像 CentOS/Debian 外部函式库的位置都不一样,因此
并不会在公开像 PyPI 上找到。
新版 pip 都会预设优先使用 wheel,没有的话可以加上
export PIP_USE_WHEEL=true
细节请参考 TP 大大的投影片:
- We Buy Cheese in a Cheese Shop
https://speakerdeck.com/uranusjr/we-buy-cheese-in-a-cheese-shop
自己的 wheel 自己做!
"""""""""""""""""""""
如果今天开发环境是相似的(同台电脑、同样设定的 VM)
就算套件没有给 wheel 照样可以自己做
设定下两行之後可以少打很多参数,
export PIP_WHEEL_DIR="$HOME/.pip/wheel"
export PIP_FIND_LINKS="file://$PIP_WHEEL_DIR"
PIP_WHEEL_DIR 给定做好的 wheel 要存哪
PIP_FIND_LINKS 则是 pip install 会来这目录看有无现成的
首先要装 wheel 这个套件
pip install wheel
接着安装好自己想要包 wheel 的套件,以 <pkg_name> 为例,
安装好 <pkg_name> 之後
pip wheel <pkg_name>
就会做出 <pkg_name>-<ver>-xxx.whl 在 wheel_dir 中。
制作过程会把 source 下载下来,但这不是重新编译的意思。
制作完成之後,未来便可选择用这个 .whl 安装 <pkg_name>
pip install <pkg_name>-<ver>-xxx.whl
在官网说明中,会看到这行
pip install --no-index --find-links=/local/wheels xxx.whl
--no-index 表示不给它看 PyPI 有没有新版,并强迫在 find_links 的目录里找
有设在环境变数中的话就不用多下 --find-links 了
没有 --no-index 时,检查 PyPI 有新版的话就会忽略本地旧版的 .whl 及 cache
结论
----
设定好之後,你可以建立一个 wheel_list.txt 然後
cat wheel_list.txt | xargs pip wheel
把常用的 wheel 都建好自用、送 VM 两相宜。
看到 pip install ipython[all]
一行装一个套件,20 秒内装好 12 个套件的感觉真好。
参考
----
- pip 官网:
https://pip.pypa.io/
- wheel 官网:
http://wheel.readthedocs.org/
如果有写错什麽再麻烦多多指教(鞠躬)
说好的 Windows 呢?
===================
上述的所有功能在 Windows 上都能正常运作。
设定档请写在 %HOME%\pip\pip.ini 中
[global]
find-links = C:\pip\wheels
download_cache = C:\pip\cache
[wheel]
wheel-dir = C:\pip\wheels
请确定这些路径存在且有权限。
在 Windows 上设定 Python
------------------------
(是不是要另外发一篇?)
如果用 Python 3.4 的话,使用官方的安装程式,
装完就有 setuptools 以及 pip 了。
虚拟环境用内建的就可以了
PS > py.exe -3.4 -m venv VENV_NAME
PS > .\VENV_NAME\Scripts\Activate.ps1
(VENV_NAME) PS >
还是彩色的喔 :)
Powershell PS1 权限
"""""""""""""""""""
如果 Activate.ps1 喷 error 的话,用管理员权限执行
PS > Set-ExecutionPolicy Unrestricted
# 按 Y
--
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 106.185.29.212
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Python/M.1406294621.A.42B.html
1F:推 kenshin528:超实用! 07/25 23:43
※ 编辑: ccwang002 (167.220.232.35), 07/26/2014 17:08:09
2F:推 adason:谢谢详细讲解~ 07/27 05:48
※ 编辑: ccwang002 (167.220.232.35), 07/27/2014 17:52:57
3F:推 timTan:越来越多套件用 wheel 了,真的快,好厉害 07/28 15:20
4F:推 zazion:实用推! 07/30 00:21
5F:推 r44:感谢~ 07/30 14:14
6F:→ keitheis:朝圣推 07/31 11:10