Python的各种实用工具,大致可以分为包管理、环境管理、编辑相关(代码补全、snippet等)、调试工具(集成开发环境)、笔记本构建工具Jupyter。
接下来就介绍下我常用的工具吧。
1. Pip
Pip一定是每位python开发者都经常使用的工具,它是强大的包管理工具。与conda相比,pip的pypi仓库提供的安装包的数量要多得多。之前也写过几篇关于pip的文章,在此做一下整理:
(1) 树莓派上多版本python及pip安装使用管理指南:树莓派是我常用的设备,因此很早写了这么一篇文章,来介绍python和pip在树莓派上的使用,其中还介绍了安装位置、源修改等技巧。
(2) python环境部署(一) —— pip依赖迁移: python在跨设备尤其还跨平台的情况下的环境部署有些麻烦,所以介绍下有哪些工具/方法可以更便捷地进行环境部署。姊妹篇:python环境部署(二) —— conda环境迁移
2. virtualenv与virtualenvwrapper
关于python的一众环境管理工具,StackOverflow上有一个回答:What is the difference between venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenv, etc? 说明了他们之间的区别。建议各位不要去深究他们实际使用时的细微区别,太浪费时间了。
我最常用virtualenv和virtualenvwrapper,如果叠加多python版本管理需求的,可以考虑pyenv, pyenv-virtualenv, pyenv-virtualenvwrapper。
3. Anaconda/Miniconda
Anaconda/Miniconda提供包管理工具conda与环境管理工具,功能上是比较完整的,用户也很多,用不用全凭个人习惯了。我个人使用中遇到的一些小问题:
(1)我的常用设备除Windows、Linux服务器(X86架构)外还有树莓派(arm架构),树莓派上可安装的conda版本老旧,命令与Windows和Linux上当前版本不同,因此使用上会有困扰;
(2)一些包在conda源里并没有发布,造成有时候必须用pip进行安装的情况,那么此时环境中实际上就用了pip和conda两种包管理工具了,当不小心用pip删除conda安装的包或者用conda删除了pip安装的包后,麻烦就来了。
(3)使用conda list会发现有不少不需要的包(即使是Linux安装的Miniconda),给人环境十分臃肿的感觉,还是用pip简洁些。
事实上,我不是很喜欢Anaconda/Miniconda,主要还是觉得臃肿,但是有时候偷懒,Anaconda/Miniconda用起来前期要做的工作更少些,又大多是部署在服务器上,禁得起折腾,也就用了(😅)。
4. VS Code + 一众Extensions
VS Code的优势就不多说了,虽然运行时占用的内存也不小,但是功远大于过。
我常用的扩展:
Python extension for Visual Studio Code:必不可少的python官方扩展
Tabnine Autocomplete: 自动代码补全(以前用的Kite,现在改用Tabnine了)
Bracket Pair Colorizer:给各种括号以不同的颜色区分,写代码时看的更清楚
Settings Sync:同步设置Snippets、配置等
另外VS Code提供snippets功能,可以参考:使用VScode的代码片(snippets) 进行使用。
5. PySnooper
使用PySnooper可以极大地提高调试python程序的效率。
一个教程:极简Python DeBug工具——PySnooper
6. JupyterLab
因为树莓派一直都开机着,我在树莓派上部署了JupyterLab服务,平时有很简短的代码要测试,或者做些demo的话,就会在这上面完成。Jupyter确实很适合于做一些代码示例和学习笔记。
20210107更新:
因远程访问需要,加之JupyterLab刚刚升级到3.0,因此在服务器上部署了JupyterLab 3.0版本,简单记录了一下:
在远程服务器上部署JupyterLab 3.0
7. IDE
我确实不怎么用IDE,因为我做的项目都不算庞大,调试起来也相对容易。一般来说,VS Code配以丰富的插件足以满足代码编辑方面的需求,简单的调试我会使用Jupyter服务器,其他调试我会在服务器的shell中进行。
我试用过的IDE:
(1) Spyder:早期用过,有variable explorer,适合数据分析,除此外好像没啥特别的了。
(2) PyCharm:我用起来实在卡,就没细探索了,据说调试大型工程好用。