= 1
a = 2
b = a + b
c print(c)
3 使用Visual Studio Code
我们一般不会直接在命令行界面进行编程, 而会利用一个集成编程环境(IDE), 为我们提供文件管理、语法提示、自动补全等等功能。 Python编程流行的IDE有PyCharm,以及我们现在要用的 VS Code 文本编辑器 + Python 相关插件。
这些集成编辑环境,通常会把.py文件的编辑和python的交互环境结合起来,让我们一边编辑py文件的同时,一边执行代码并查看结果。数据分析完毕时,代码同时也写成了。
3.1 代码的存放
在正式开始之前,选择一个存放代码等等有关文件的文件夹。 为了便于演示,这里选择在桌面上新建一个“python_class”的文件夹, 作为本课程有关代码的存放地点。
注意: 文件夹的名称最好不要有空格,空格建议用下划线替代,否则可能会产生bug,见排错:VS Code 执行代码出错
但一般建议选择一个比较好的目录,比如你可能有一个地方是专门用来存放课程的地方(比如在“我的文档”下), 在此位置建立python_class较好。这里选择桌面仅仅是为了方便演示。
注意: 课程文件夹一般不要放在在C盘根目录下,可能有权限问题。
打开 VS Code,选择“文件”→“打开文件夹”,在 VS Code 的资源管理器中我们发现什么都没有。
3.2 建立一个源代码文件
你可以直接在Windows/macOS的中建立一个新的文本文件,然后把扩展名改为.py
,也可以在VS Code中完成。
在VS Code中有2个办法:
- 选择:菜单:文件,新建文本文件,或者
- 打开资源管理器(左侧工具栏的第一个图标,点击会弹出当前目录的结构),右键点击空白,新建文件。
都可以建立一个新的文本文件。直接保存,给这个空白文件起一个名字,如“001.py”。 注意,扩展名必须是“.py”。
当你在 VS Code 中编辑一个 .py
文件,VS Code 会自动调用所有与 Python 有关的插件。 VS Code 会从一个文本编辑器,成为一个集编辑、运行、调试于一身的 Python 集成开发环境。
当然,你用 VS Code 来写其他语言的代码也可以。
3.3 VS Code 的界面
右上角出现了播放按钮▶,可以把当前文件的代码从头到尾执行一次。
右下角出现了 Python 字样,现在进入了 Python 代码编辑模式。
注意: VS Code 打开什么文件,就会进入什么模式。如果你的VS Code 没有进入Python代码编辑模式,最大的可能是你还打开一个.py
文件。如果是这样,请先完成上一小节。
如果出现了黄底色的 “选择解释器” Select Interpreter 字样,是没指定解释器。等于在问: 写好的代码交给谁来执行?可以点击状态栏中的“选择解释器”黄色按钮,进行选择。
点击之后,如果一切顺利, 在VS Code界面的上方,你的解释器的路径会被自动识别出来,你选择 带有 Conda
标记的解释器即可。
例如,在 Windows 上可能是~\anaconda3\python.exe
。如果你一开始修改了 Anaconda 的安装路径,比如改到D盘,则可能是 D:\anaconda3\python.exe
。
(虚拟环境 env
相关内容这里不进行深入)
如果第一次没弹出,记得点几下图中的刷新按钮 ↻。
注意:
- 如果你在安装 Anaconda 的时候更换了安装路径,这里可能会出现找不到 Anaconda,进而找不到 Python 解释器的问题,见下文“排错:VS Code 执行代码出错”部分,或者找老师。
- 在找不到 Anaconda 的情况下,部分同学会选择让 Windows 系统安装一个 Python,新手不推荐。
- 不要选择
miniconda
,部分同学会错误地安装了miniconda,新手不推荐。
3.4 第一段代码
我们在文件里写如如下代码,保存(ctrl+s)。
下例演示两数相加并打印结果。如果你完全没学过任何编程,应该可以凭直觉看出这段代码的含义。
3.4.1 预备知识:Python的注释(comment)
先说注释。Python使用井号:#
来表示注释。所谓注释,就是“给人看”的内容,而Python的解释器会直接忽略掉这部分。
- 注释可以出现在任何地方,注意
#
号只会影响同一行右边的代码,因此也可以出现在行尾。 - 注释往往也可以用来临时屏蔽一部分代码,只要在代码的最左侧插入一个
#
,那么整行代码会被Python解释器忽略。这是常用技巧。
我们尝试写几个注释,例如:
# 这段代码会计算a和b相加的结果
= 1
a = 2
b = a + b # 这行代码会计算 a + b
c
# 下面的代码会把c的值打印出来
print(c)
注释是对代码的说明,非常重要:
- 写代码时间长了,肯定会不记得自己写的内容。有时候上午写的,下午就会忘记。
- 多人合作的时候,要读懂彼此的代码,也必须有良好的注释。
特别地,注释是考试的给分点。你的考试程序输出了正确的结果,可以得到合格评价,同时具有良好的编写风格、合理的注释,才能得到更高分。
3.5 执行
代码写好了,执行有几种方式。
3.5.1 Run Python File 按钮 ▶
点击右上角的播放按钮Run Python File,会把当前的py文件,从头到尾执行一次。 你会看到输出了结果3
。
点击垃圾桶图标🗑,终止这个终端。
一般而言,要把文件从头到尾执行一次,就可以用这种方式。
3.5.2 交互执行
如果你要做数据分析之类的任务,需要一边看结果一边写代码,我们会选择交互执行的方式。
使用一种特殊的注释# %%
(井号,2个百分号,中间可以有空格),一般称为“cell separator” 可以把python代码分成一个一个的cell。试一下:
# %%
# 对变量a和b进行赋值并打印
= 1
a = 2
b print(a) # 打印a的值
print(b) # 打印c的值
# %%
# 计算c的值并打印
= a + b
c print(c) # 打印c的值
# %%
cell separator 把代码切成了一块一块:两行 separator 中间的部分,被视为一个 cell。
我们点击第一个run cell,终端只会执行第一个cell,即1到6行的代码。
这一块代码会打印出变量a
和b
的值。
点开终端上的省略号,可以看到这个cell具体执行了什么代码。
同理,点击第二个run cell会执行下一块代码,计算a+b并打印c。
但一般我们用快捷键:
Ctrl+Enter(macOS: Cmd+Enter):执行当前 cell;Shift+Enter:执行当前 cell,并跳到下一个 cell。
所以,你可以按住Shift,连续按回车,就可以一个cell一个cell往下执行。
这在进行数据分析的时候会用很多。
单步执行和debug会在后面专门说。
特别地,在交互执行下,每个 cell 的最后一行的结果会自动显示。 如果只是查看变量的值,这可以让我们少打一个 print()
或 display()
。 注意这只在交互模式下生效。
尝试:把上述代码的print(a)
和print(b)
改写。
注意: 如果你的 Anaconda 安装路径中有中文(例如你的用户名是中文),可能运行报 Bad file descriptor
错误,见下文“排错:VS Code 执行代码出错”部分,或者找老师。
3.5.3 变量表
在交互执行的过程中,可在右侧的 Variables 面板查看当前会话中的变量信息。
3.5.4 脱离 VS Code 执行
Python 本身是一个独立的可执行程序,和 VS Code 并无关系。这个可执行程序即所谓“解释器”, 会把源代码从第一行执行到最后一行一次。
因此,你只要告诉 Python 你要执行哪个 .py 文件即可。
这个一般教程会放在第一部分,但以我们的任务更多是要交互执行,这里只简单演示一下。
在你的 Anaconda Prompt 或终端中,进入你刚才新建的 python_class 目录。
001.py python
结果是一样的。
实际上,右上角的播放按钮,做的是同样的事:等价于在已激活的环境中进入工作目录并执行 python 001.py
,只是把多个步骤合并成一个按钮。
3.6 本节要求
- 创建一个用来专门存放本课程代码和数据的文件夹(称为工程目录),如果图省事就在桌面上建立(但不推荐)
- 在上述工程目录中建立一个.py文件,计算上述的 1+2的代码,包括使用“运行Python文件”和“按单元格运行” 两种方式。(这里可能会遇到一大堆问题)
注意:
- 安装和配置编程环境是文科同学学习编程的第一个大障碍,过了这一关,后面就会顺利起来。
- 历届都有小部分同学一直卡在安装过程,最多的能卡半个学期,因此不要犹豫,搞不定找老师。
3.7 排错:VS Code 执行代码出错
3.7.1 运行整个Python文件无结果且无错误提示
点击“运行 Python 文件”按钮后,VS Code下方的命令行终端可以正常弹出,但是不显示任何结果,或者闪过一行命令后直接结束。
可能会闪过类似这样的命令:
conda run --live-stream --name base python d:/Python class/001.py
这是因为你的目录路径有空格,例如上例中的“d:/Python class”,导致Windows的终端把空格前面的部分视为你要执行的命令,如:
conda run --live-stream --name base python d:/Python
显然这不是你的.py文件的路径。
解决办法:把你的工作文件夹的中空格去掉 或者改为下划线_
即可,如讲义的范例python_class
。
3.7.2 运行整个Python文件报出Conda错误
点击“运行 Python 文件”按钮后,VS Code下方的命令行终端可以正常弹出,但会弹出红字错误提示:
conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确
或者
&:无法加载文件 c:\users\*\anaconda3\shell\condabin\conda-hook.ps1,因为在此系统上禁止运行脚本。
这是因为部分同学的powershell版本有点旧,或者权限不足导致无法启动conda环境(这句话你看不懂也没关系)。我们统一改为cmd即可。
- 点击左下角齿轮图标,选择“设置”
- 在搜索框中输入“terminal.integrated.defaultProfile.windows”
- 选择“Command Prompt”
再点击“运行 Python 文件”按钮后,应该不会再报错。
3.7.3 运行单元格(run cell)出现 Bad file descriptor 错误
如果你用的是Windows,且你的用户名是中文,那么用vs code的run cell运行,可能会出现如下错误:
(示例截图:这是某位同学的笔记本电脑,请大家要经常清理自己电脑的屏幕)
注意最后一行
Bad file descriptor (bundled\zeromq\src\epoll.cpp:100)
这个问题可能与中文用户名有关,某个组件(pyzmq)在部分版本中处理中文路径会出错。处理方法有 2 种: 第一种已在部分同学的电脑上验证,第二种作为备选方案(需与 Python 版本匹配)。
方法1:改环境变量
在 Windows 菜单中选择“编辑系统环境变量”
在弹出的窗口中选择最下方的“环境变量(N)”
可见最下方有TEMP
和TMP
2个环境变量(临时文件所在目录)。双击2个环境变量,都改为C:\Temp
。
最终如图。
重启电脑即可。
方法2:调整 pyzmq 版本(备选)
先更新 VS Code 的 Python/Jupyter 扩展与 pyzmq 到与当前 Python 版本兼容的稳定版本;若仍报错,可尝试临时指定版本(需与 Python 版本匹配)。
进入 Anaconda Prompt(见前一章),依次执行:
pip uninstall pyzmq <回车>
pip install pyzmq==19.0.2 <回车>
重启 VS Code 即可。
3.7.4 找不到 Anaconda
如果不在默认的路径上安装 Anaconda,比如转移到了 D 盘,可能在选择解释器(Select Interpreter)的时候,找不到正确的 Conda 和 Python 路径。这时候需要手动设置你的 Conda 安装路径。
在 VS Code 界面的左下角点击“管理(齿轮图标)”→“设置”,搜索“conda”,一般有三个选项:
(注意:随着 VS Code 更新,选项也会变多,新版本可能需要你拉滚动条才能找到。)
Conda Path
:指向 Conda 可执行文件。例如装在D:\\anaconda3\\
下,可设置为D:\\anaconda3\\condabin\\conda.bat
(或D:\\anaconda3\\Scripts\\conda.exe
)。Default Interpreter Path
:指向具体的 Python 解释器。例如D:\\anaconda3\\python.exe
,或环境D:\\anaconda3\\envs\\<env>\\python.exe
。
这时候再进行前面选择解释器的过程,应该就找到 Conda 和解释器了(选择解释器的时候多点几下刷新按钮 ↻)。