原文地址:[Python web 开发实战]
进阶篇:pip 高级用法
命令自动补全
pip 支持自动补全功能,对于 zsh 用户非常友好。zsh 用户使用如下命令就可以支持自动补全了:
1 | pip completion --zsh >> ~/.zprofile |
或者在 ~/.zshrc 里面加一行:
1 | eval "`pip completion --zsh`" |
如果使用 bash,则应该执行如下命令:
1 | pip completion --bash >> ~/.profile |
现在输入 "pip i<Tab>"
就会变成 "pip install"
,自动补全了 install
这个子命令
普通用户安装
如果不是 root 用户,没有sudo 权限,也不在虚拟环境里面,要如何安装包呢?可以使用如下命令:
1 | pip install django --user |
这样,安装的包会放在当前用户的 .local 目录下;
1 | % pip show django |grep Location |
不能在
virtualenv
中使用--user
,需要退出虚拟环境后才可以使用
编辑模式
作为开发者,为了让最新的开发版代码及时生效,开发过程中可以使用 pip 的编辑模式:
1 | > git clone https://github.com/dongweiming/vine |
可以看到, “pip install -e .” 会把开发目录作为包的路径。这样就可以实时修改了。
使用 devapi 作为缓存代理服务器
pip 缓存只针对当前的用户。如果公司使用 Python 的规模很大,尤其是有很多自己分发的包的时候,使用缓存代理是非常提高下载效率的方法,这样就不在依赖网络环境到 PYPI 下载包了。
- 安装 devpi-server
1 | pip install devpi-server |
- 启动 devpi-server
1 | devpi-server --host=0.0.0.0 --start |
默认缓存服务器使用了 3141
端口。现在我们就可以使用 -i
参数指定使用缓存代理了:
1 | pip install -i http://localhost:3141/root/pypi/ tornado |
当然也可以把这个 “index-url” 设置写入到配置文件中:
1 | mkdir ~/.config/pip -p |
- 如果希望像 PYPI 那样有个 web 界面,可以安装 devpi-web:
1 | pip install -U devpi-web |
- 重启 devpi-server
1 | devpi-server --host=0.0.0.0 --stop |
现在就可以通过访问 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
)实现的镜像客户端。它可以帮我们建立一个包含了全部包的本地镜像服务。
更详细教程参考 pypi 文档