7.14 使用 trypackage 试用新库¶

听到某些人说 xx 库非常好用的时候,我们总是忍不住想要去亲自试试。
有一些库,之所以好用,是对一些库做了更高级的封闭,你装了这个库,就会附带装了 n 多依赖库,就比如前一篇文章介绍的 streamlit 来说,依赖包就达 90 几个之多?
比百度全家桶,还 tm 的全家桶啊…
也正是因为害怕会污染我的全局 Python 环境,我通常在试用新包的时候,都会使用 venv 创建虚拟环境,再去安装,完事之后,再清理虚拟环境即可。
有没有发现,整个流程,其实还是挺麻烦的。
刚好昨天晚上,Github 上瞎逛,被我发现一个库,可以解决我一直以来的烦扰。
这个库叫 trypackage
,为试库而生的库。
整体的效果可以看下面这张动图

当你使用 try xx
命令时,它会做哪些事呢?
安装指定版本的 Python 解释器
创建临时的虚拟环境
激活虚拟环境
在虚拟环境中安装你要试用的 Python 库
直接进入 Python Shell 模式
自动将你要试用的库导入进来
1. 如何安装¶
一条命令就可以安装它
python3 -m pip install trypackage
可以看到 trypackage 只依赖一个 click 命令行库,还是很轻量的

其实不是这样,try 会基于 virtualenv 创建虚拟环境,因此还要安装 virtualenv 和 virtualenvwrapper
python3 -m pip install virtualenv virtualenvwrapper
2. 基本使用¶
使用 try requests
,try
就会创建一个虚拟环境,然后在该虚拟环境中,安装 requests
,安装完成后,自动进入 Python Shell 的模式,并且自动导入好你要试用的包

最贴心的是,试用完后,退出 Python Shell ,会自动清理掉虚拟环境。
3. 更多用法¶
指定 python 版本¶
我的环境没有安装 Python 3.8,通过 -p
参数,可以指定 Python 3.8
,安装的过程太快,快得让我有点怀疑这是不是真正的去安装 Python 3.8
解释器了。

也可以直接指定本地的 Python 版本,例如
try requests -p /usr/bin/python3.7.1
指定运行模式¶
Try 直接的运行模式非常多
1、当你不指定时,默认使用 python shell 的模式
# 二者等价
try requests
try requests --shell python
2、使用 ipython 有两种指定方式
# 二者等价
try requests --ipython
try requests --shell ipython

3、使用 ptpython 或者 ptipython
这两种模式都有代码提示与自动补全功能

4、使用 bpython 模式
Bpython 的代码提示与补全比 ptpython 、ptipython ,更强一点,其他的区别还没试用到。

在编辑器中打开¶
try requests --editor
指定 Github 仓库包¶
# 语法示例
try <user>/<repo>
# 安装 Github 上的 Kenneth/requests 上的 master 版本
try kennethreitz/requests
指定已经存在的虚拟环境¶
try requests --virtualenv ~/.try/sandbox
指定虚拟环境的目录¶
默认情况下,try
会将虚拟环境创建在一个默认的目录中,这个目录比较深,不容易记住,你可以指定
--tmpdir
参数,告诉 try
要将虚拟环境创建在这里,这个参数对于想要持久化虚拟环境的人会很有用。
try requests --tmpdir ~/.try
4. 配置文件¶
try 虽然提供命令行入参的方式来识别用户选项,但对于一些用户来说,更希望能一次性修改 try 的默认选项,而不用每次都指定多个参数。
这时候,可以在你的 APP 目录下新增一个 config.ini 文件,内容模板如下
[env]
virtualenv=~/.try/sandbox
python=3.8
shell=ipython
keep=false
always_use_editor=false
tmpdir=~/.try
所谓的 APP 目录,在不同的系统中是不一样的,可以使用如下代码来查看
>>> import click
>>> click.get_app_dir("try")
'/Users/iswbm/Library/Application Support/try'
>>>
有了 config.ini,再次 try ,就会发现效果与配置一样的预期一致。

5. 总结一下¶
Try 是一个非常实用的命令行工具,可以说完全击中我的痛点,能把这样一个库做出来,真的是创意十足,再一次印证 Python 是懒人第一语言 。。