⚠警告
受限于作者的知识储备与开发经验,文章中难免会出现错误或异想天开等不符合实际情况的暴论,请您谨慎甄别取用。如您发现错误结论或其他需要修改的问题,可发送电子邮件至 well_404@outlook.com 以联系作者进行更正。
面对初学者的python开发环境配置
在学习 python 的过程中,难免会遇到一些环境方面的问题,例如两个不同项目的依赖相互冲突,使用IDLE写代码太麻烦,写出来的的代码格式乱七八糟…
本文希望用一个相对简单易懂的方式,让大家能有一个可以长期使用的 Python 开发环境,并在之后逐步了解一些常用的开发工具。
开篇先叠甲
本教程并不是一个十分严谨、客观且适用于所有人的环境组合,如果你的开发环境也很好用那么你大可不必切换到不熟悉的开发环境,毕竟自己用的舒服才是最重要的。
编辑器
对于程序猿来说,技术层面最能提高工作效率的无疑是一款好的编辑器。
目前 Python 主流的代码编辑器有 Pycharm 和 VSCode 两款。
Pycharm or VSCode?
Pycharm 是由 jetbrains 开发并发行的一款 Python 集成开发环境,拥有丰厚的历史底蕴。但由于功能繁多、配置复杂,对于新手上手较为困难,笔者曾多次遇到因不理解某些概念直接使用 Pycharm 造成的错误(如工作区错误,虚拟环境错误等)。同时其体积和内存消耗惊人,空载状态(打开一个空的文本文档)下就消耗了约1.5G的内存。因此除非你是 Pycharm 的老用户,否则并不推荐使用 Pycharm 进行开发。
VSCode 是由微软开发的开源免费的跨平台代码编辑器,得益于其庞大的插件市场,你几乎可以用 VSCode 对任意类型的代码进行编辑,对于 Python JavaScript TypeScript 等多种语言以及 Json Yaml Markdown HTML 等富文本均有十分良好的支持。由于 VSCode 起步较晚,其表现在初期并不如 jetbrains 的一众老牌编辑器,但目前笔者认为其功能和使用体验已经实现了全方位的赶超。同时,相较于 Pycharm 惊人的资源占用,VSCode 的空载状态(打开一个空的文本文档)下占用约为280M,但内存占用会随着安装的插件和打开的项目大小逐步增加,实际安装好对应插件并打开一个 Python 项目的占用约为 800M-1G 左右。
VSCode 的安装
VSCode的安装方式可以参考菜鸟教程的这篇文章,其中详细的展示了VSCode的安装方法,在此容笔者偷个懒不做演示。
VSCode 插件
插件系统算是 VSCode 的灵魂,是否正确的选择了插件对于编程来说会有截然不同的体验。
在按照上文安装完汉化包后,在输入框搜索 Python 并安装 Python 语言插件,并推荐安装 isort indent-rainbow SonarLint Sourcery 这几个辅助插件。
Python 语言插件是对代码提供高亮以及语法提示,是 VSCode 编写 Python 必备的插件。
isort 可以对你的 import 进行排序,需要在 Python 文件中需要通过右键菜单主动调用。
indent-rainbow 可以给你的代码缩进加上不同颜色的高亮,并对不符合缩进的部分标红。
SonarLint 可以帮助你发现代码中的潜在问题和不符合PEP规范的代码,并且也适用于多种不同的编程语言。可以参考插件介绍页面的动图了解其具体功能。
Sourcery 相对 SonarLint 不光可以提示你的错误,更可以直接帮助你修改代码,使其拥有更好的可读性。可以参考插件介绍页面的动图了解其具体功能。
完成以上这些插件的安装后,你就会得到一个舒适的代码编辑环境了。
虚拟环境
虚拟环境,顾名思义是一个独立于其他环境的开发环境,就像是虚拟机之间一样,不同的虚拟机无法直接影响其他的虚拟机,虚拟环境也是如此。面对同时需要使用较多依赖、同时开发多个项目甚至部分因为环境问题无法安装的项目(常见于深度学习方面),使用虚拟环境都能有效的解决。
Python 的虚拟环境目前有自带的 venv 和 virtualenv,也有基于此开发的功能更加强大的 poetry 和 pdm,这些工具都很好用,但相对较为复杂,需要用户对虚拟环境有一定的理解后才能顺利的使用。
这里笔者更推荐新手使用 conda,conda 是一个跨平台、多语言的虚拟环境管理工具,相较于前文提到的的虚拟环境在解释器层面的虚拟化,conda 更像是虚拟开发环境,每个环境都是一个“独立”的 Python。因此相较于前者,conda 不需要额外安装 Python解释器,只需要安装 conda 即可直接在环境创建中安装指定版本的 Python 解释器。
但 conda 也有一个严重的缺点,就是较高的磁盘空间占用。由于其跨语言的特性,conda 的虚拟环境管理远不如 poetry 和 pdm 来的精细,并且一个环境就附带一个 python 解释器也会消耗不少的磁盘空间,至于项目管理的功能更是相较于无虚拟环境几乎没有提升,因此 conda 只是一个纯粹的虚拟环境,在单项目依赖较为复杂和需要包管理的情况下,需要配合 poetry 或 pdm 来使用。
不过上述的缺点相对萌新来说远不如其简便的操作与最强的鲁棒性所带来的绝对优势,同时大量科学计算、深度学习等领域也会依赖 conda 环境才能运作,并且 conda 里面也可以套娃安装 pdm 或 poetry(虽然不推荐这么做)。因此对于萌新来说学习 conda 是最好的选择。
conda 的选择
conda 目前有两个版本:Anaconda 和 Miniconda。Miniconda 是 conda 的最小实现;Anaconda 中额外包含了常用的深度学习的依赖以及GUI界面。关于二者的选择,可以参考官方的描述。但笔者仅推荐使用 Miniconda,一是因为 Anaconda 中的大多数依赖萌新很难用得到,二是因为 Anaconda 的GUI界面实际上并不好用且非常卡(可能是用 Python 的UI库写的吧),因此没必要浪费额外的磁盘空间去安装 Anaconda。
conda 的安装
Windows
在 miniconda下载地址 中选择合适的版本进行下载。64位用户可以直接点击这里下载最新版的安装包进行安装。
由于 Windows 下的 miniconda 安装并无什么难度,基本上一路 next 就可以了,在此不进行演示。
千万不要将 miniconda 安装到任意一个Program Files路径下,此操作将会导致 conda 因权限问题无法使用
注意在安装前最后一步将 miniconda 添加至环境变量。
注意这四个选项一定要全部勾选!这里也推荐勾选第二项以方便在其他程序和终端中进行调用。
conda的基础使用
我们来简单介绍一些基础的使用方法,更多指令与操作可以查询官方文档。
使用conda创建虚拟环境
创建一个名为 test
的虚拟环境。
1 | conda create -n test |
创建一个名为 test
,且python版本为 3.8
的虚拟环境的虚拟环境。
1 | conda create -n test python=3.8 |
从已有的虚拟环境 test
复制一份为 test_copy
。
1 | conda create -n test_copy --clone test |
使用conda移除虚拟环境
移除一个名为 test
的虚拟环境。
1 | conda remove -n test --all |
查看conda虚拟环境列表
1 | conda env list |
使用conda激活虚拟环境
激活一个名为 test
的虚拟环境。
1 | conda activate test |
如果激活成功,在用户名前会有环境名的提示,例如:
1 | C:\Users\Well404>conda activate sign |
值得注意的是,Windows PowerShell 默认情况下无法直接激活 conda 虚拟环境,请务必在 Windows 系统中使用 cmd 进行操作或在 PowerShell 中使用 conda init
命令来初始化 conda 的配置。
退出conda虚拟环境
1 | conda deactivate |
值得注意的是,此命令不包含任何额外的参数。因为一个终端仅能同时激活一个虚拟环境,因此也没有必要指定取消激活的虚拟环境的环境名。
conda环境内的使用
由于使用了一个虚拟环境,在这个虚拟环境激活时,我们可以正常的使用 Python 中的绝大部分命令与工具,同时 conda 也提供了一些指令,但在此就不过多阐述了。
对于仅使用虚拟环境这一项功能的用户,我们可以直接使用正常操作 Python 的方式进行操作,例如使用 pip
安装第三方库,使用此环境下中 python 的命令行工具以及交互式编程等等,简而言之就是平时怎么用还怎么用,只要你的虚拟环境是激活的的状态,此环境内的改变是不会影响到其他无关的环境的。
在 VSCode 中应用 Conda 环境
在 VSCode 中打开一个 Python 文件之后,可以在编辑器界面的右下角找到当前的的解释器(环境)的版本和名称,单击后便可以自由选择你所需要的解释器(环境)了。
结尾的一些碎碎念
正如大家所见,本文并不是一个介绍类的教程,同时也完全没有涉及到 Linux 平台。Python 开发可用的工具有很多,一篇文章也不可能介绍完,本文只介绍了最基础最通用的开发环境,能够满足大部分新手开发者的环境需求,但面对更加复杂的需求显然是不足的。之后有时间的话笔者也会发布一些其他 Python 开发工具和环境配置方面的教程,并会同步在这篇专栏下面。
这里是 Well404,我们下篇文章再见!
虚拟环境的介绍与选择
文章中关于 conda 部分的介绍大部分来源于笔者之前发布的专栏,借此机会也更新了其中过时与描述不准的内容,可以作为拓展资料进行阅读。