进阶篇:pip 高级用法
命令自动补全
pip 支持自动补全功能,对于 zsh 用户非常友好。zsh 用户使用如下命令就可以支持自动补全了:
> pip completion--zsh>>~/.zprofile > source~/.zprofile
或者在~/.zshrc 里面加一行:
eval"`pip completion--zsh`"
如果使用 bash,则应该执行如下命令:
pip completion--bash>>~/.profile
现在输入“pip i<Tab>”就会变成“pip install”,自动补全了 install 这个子命令。
普通用户安装
如果不是 root 用户,没有 sudo 权限,也不在虚拟环境里面,要如何安装包呢?可以使用命令:
> pip install django--user
这样,安装的包会放在当前用户的.local 目录下:
> pip show django|grep Location Location:/home/ubuntu/.local/lib/python2.7/site-packages
不能在 virtualenv 中使用“--user”,需要退出虚拟环境后才可以使用。
编辑模式
作为开发者,为了让最新的开发版代码及时生效,开发过程中可以使用 pip 的编辑模式:
> git clone https://github.com/dongweiming/vine > cd vine > pip install -e . > cd > python-c 'import vine;print vine' <module 'vine' from '/home/ubuntu/web_develop/vine/vine/__init__.py'>
可以看到,“pip install-e .”会把开发目录作为包的路径。这样就可以实时修改了。
使用 devapi 作为缓存代理服务器
pip 缓存只针对当前的用户。如果公司使用 Python 的规模很大,尤其是有很多自己分发的包的时候,使用缓存代理是非常提高下载效率的方法,这样就不再依赖网络环境到 PYPI 下载包了。
> pip install devpi-server
启动 devpi-server:
> devpi-server--host=0.0.0.0--start ... starting background devpi-server at http://0.0.0.0:3141 ...
默认缓存服务器使用了 3141 端口。现在我们就可以使用-i 参数指定使用缓存代理了:
> pip install-i http://localhost:3141/root/pypi/tornado
当然,可以把这个“index-url”设置写到配置文件中:
> mkdir~/.config/pip-p > cat~/.config/pip/pip.conf [global] index-url=http://localhost:3141/root/pypi/+simple/
安装 Django 看一下:
> pip install django Collecting django Downloading http://localhost:3141/root/pypi/+f/706/87b2d4a2dfa51/Django-1.9.6-py2.py3 -none-any.whl (6.6MB) 100%|████████████████████████████████|6.6MB 42.1MB/s Installing collected packages:django Successfully installed django-1.9.6
可以看到现在的安装包是从缓存代理获取的,而不是从每次都到 PYPI 下载了。
如果希望像 PYPI 那样有个 Web 界面,可以安装 devpi-web:
> pip install-U devpi-web
重启 devpi-server:
> devpi-server--host=0.0.0.0--stop > devpi-server--host=0.0.0.0--start
现在就可以通过 http://127.0.0.1:3141/访问这个简单的 Web 界面了。
PYPI 的完全镜像
bandersnatch(https://bitbucket.org/pypa/bandersnatch )是 PyPA 组织根据 PEP 381(http://www.python.org/dev/peps/pep-0381/ )实现的镜像客户端。它可以帮我们建立一个包含了全部包的本地镜像服务。
先安装 bandersnatch:
(bandersnatch)> pip install-r https://bitbucket.org/pypa/bandersnatch/raw/stable/ requirements.txt (bandersnatch)> pip install zc.buildout (bandersnatch)> sudo apt-get install mercurial-yq (bandersnatch)> hg clone https://bitbucket.org/pypa/bandersnatch~/bandersnatch (bandersnatch)> ~/bandersnatch (bandersnatch)> buildout
默认还没有创建 bandersnatch.conf 这个配置文件,假如不使用“-c”,默认是/etc/bandersnatch. conf。先启动 bandersnatch 创建配置文件:
(bandersnatch)> bandersnatch-c bandersnatch.conf mirror
更新 directory 配置项,修改 directory 选项的值为/data/pypi,这个目录就是存放包的根目录:
(bandersnatch)> grep directory e|grep-v ';' directory=/data/pypi
再次启动“bandersnatch mirror”:
(bandersnatch)> sudo mkdir/data (bandersnatch)> sudo chown ubuntu:ubuntu/data (bandersnatch)> bandersnatch-c bandersnatch.conf mirror
现在就开始同步镜像了。需要注意,PYPI 上所有的包加起来有几百 GB,而且还在不断增加中,请合理安排硬盘资源。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论