这两年我陆陆续续带过不少零基础转行学 Python 的朋友,发现一个很有意思的现象:十个人里有七八个,不是被语法劝退的,而是挂在“装环境”这一步。明明照着教程一步步点,结果打开命令行输入python,要么蹦出来微软商店,要么提示python was not found,再要么就是 pip 装包装到一半报红。折腾一晚上,代码一行没写,心态先崩了。
这篇文章就是 Python 学习系列的第一篇,核心任务只有一个:把地基打牢。我会从 Python 安装、开发工具选型、VSCode 环境配置、基础语法入门,到常用库安装和常见报错排查,把新手最容易踩的坑一次性讲透。适合完全零基础的小白,也适合装过环境但总出问题、想系统梳理一遍的朋友。看完之后,你至少能做到:自己动手装好环境、写跑第一段 Python 代码、遇到报错知道去哪里找原因。
1. 学习路线与整体设计思路
1.1 为什么要把“环境搭建”当作第一课
很多人学编程的第一反应是找教程、看语法、背代码,却忽略了一个前提:代码需要运行环境。Python 本身只是一个解释器程序,你写的.py文件要让它跑起来,必须先把解释器装好,并且让系统能找到它。这个“找到”的过程,就是环境变量 PATH 在起作用。
另外,写代码不能光靠记事本。一个趁手的编辑器能帮你自动补全、高亮语法、调试报错,效率完全不一样。所以我一直跟新人说,前三天别急着学语法,先用两天把“装 Python + 配编辑器 + 跑通第一行代码”这三件事做扎实。后面所有的学习,都是在这个地基上盖楼。
1.2 Python 学习路线的完整拼图
Python 的学习路径其实可以画成一张地图,第一阶段是基本功,第二阶段是方向选择。
先看第一阶段,也就是这个系列前几篇要覆盖的内容:
- 环境搭建:安装 Python、配置编辑器、掌握 pip 包管理工具
- 基础语法:变量、数据类型、条件判断、循环、函数
- 数据结构:列表、字典、元组、集合,这些是处理数据的骨架
- 文件操作:读写文本文件、CSV、JSON
- 异常处理:让程序在出错时不至于直接崩溃
第二阶段是方向选择。Python 的应用方向很广,常见的有 Web 开发(Django/Flask)、数据分析(pandas/matplotlib)、爬虫(requests/BeautifulSoup)、自动化脚本、人工智能(PyTorch/TensorFlow)。每个方向需要的基础不一样,但第一阶段的内容是共用底座。
这里要特别提醒一句:不要一上来就奔着“爬虫”或“人工智能”去。我见过太多新手,装了 Python 就直接 pip install 各种大库,结果连requests返回的 Response 对象是什么都搞不清,最后只能复制粘贴别人的代码,改一行就报错。先把底座打牢,方向的事后面再定,完全不迟。
2. 环境搭建:Python 安装全流程与避坑指南
2.1 Python 安装前的关键决策
装 Python 之前,你先要搞清楚三件事:装哪个版本、装 64 位还是 32 位、从哪下载。
版本选择上,直接装官方最新的稳定版就行。Python 官方每年都会发布新版本,比如 3.12、3.13 这样的版本号。这里有个重要原则:别追最新,但别太旧。我建议选最新的稳定版,但如果你要用的第三方库对 Python 版本有要求,可以等所有库都装好验证通过再决定是否升级。新手第一装,跟着教程指令选一个版本就好,不要纠结。
位数选择上,现在的主流系统基本都是 64 位,直接选 64 位安装包。除非你的电脑是老古董,否则不用考虑 32 位。
下载渠道是大坑。很多人搜索“Python 下载”,会进到各种第三方下载站,下载下来一堆捆绑软件。正确的渠道只有一个:Python 官方网站 python.org,这是我在实际教学中最想强调的一点。
下载时认准 downloads 页面里的最新稳定版,选对应的 Windows installer 包。macOS 用户选 macOS installer,Linux 用户一般别从官网下,用系统自带的包管理器更省事——比如 Ubuntu 上用apt install python3,这也是“linux系统安装python”相关搜索里最常见的解法。
2.2 Windows 平台上安装 Python 的完整步骤
下载好安装包之后,双击运行,界面上的第一个选项就是决定之后踩不踩坑的关键:
“Add Python to PATH”这个复选框,一定要勾上。
path勾选(必选):Add Python to PATH 是最核心的一步,忘了勾就会遇到 "python was not found" 这类报错。这个选项会把 python.exe 所在的路径写入系统环境变量,让你在命令行里敲python就能启动解释器,是新手最容易忽略的一步。
然后点 Install Now,等待安装完成即可。这里我再强调一下:很多教程会推荐 Customize installation,自定义安装路径。对于新手,我建议直接用默认路径,理由很直接——默认路径最省心,后续装库、找文件都方便。等你有经验了再考虑改路径。最后点击 Close 关闭。
安装完成后,验证环境是否正确的方式是打开命令行(Win+R 输入 cmd 回车),输入:
python --version如果输出类似Python 3.13.1这样的结果,说明安装成功。再输入:
pip --version能输出版本号,说明 pip 也装好了。pip 是 Python 的包管理器,后面所有第三方库都靠它来安装。
2.3 安装完成后的路径与环境变量验证
有时候明明装了 Python,命令行却还是提示找不到,多半是 PATH 的问题。你可以手动检查一下环境变量:右键“此电脑” → 属性 → 高级系统设置 → 环境变量,在“系统变量”里找到 Path,点编辑,确认里面有 Python 的安装路径和 Scripts 子目录路径。
正常情况下,Windows 默认安装路径是:
C:\Users\你的用户名\AppData\Local\Programs\Python\Python313\以及同目录下的:
C:\Users\你的用户名\AppData\Local\Programs\Python\Python313\Scripts\前面那条用来识别 python 命令,后面那条用来识别 pip 命令。两个都在 PATH 里,命令行才能正常响应。
这里分享一个小技巧:如果你不想手动改系统环境变量,最简单的办法是卸载重装一遍,安装时把“Add Python to PATH”勾上,系统会自动配置好。
2.4 国内源地址与 pip 加速配置
pip 装库默认从官方源下载,官方源在国外,部分地区下载速度不太稳定。解决办法是换成国内镜像源,这也是“python国内源地址”、“python安装numpy库的方法”这些问题背后的共性问题。
使用方式是加-i参数指定源地址,安装时临时指定。这里提供几个稳定可用的国内镜像站:
# 清华源 pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple # 阿里云源 pip install numpy -i https://mirrors.aliyun.com/pypi/simple/ # 腾讯源 pip install numpy -i https://mirrors.cloud.tencent.com/pypi/simple/但每次敲那么长一串太累了,更好的做法是永久配置。在命令行里执行:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple配置一次之后,以后再pip install就是用镜像源了。我个人的体验是,清华源和阿里云源都很稳,哪个快用哪个即可。
注意:换源只是换下载服务器,不影响 Python 代码的运行效果,不用担心“用了国内源是不是不标准”这种问题。
3. 开发工具选型:VSCode 与 PyCharm 的配置实战
3.1 编辑器选择:VSCode 还是 PyCharm
环境装好之后,下一步就是选编辑器。这个选择题我遇到过太多次,直接说结论:
- 追求轻量、扩展性强、以后可能写前端或其他语言:选 VSCode
- 只想专攻 Python,喜欢开箱即用的完整 IDE 体验:选 PyCharm Community 版
PyCharm 的优点是可以直接打开项目、自动识别虚拟环境、内置调试器,适合专注 Python 开发的人。缺点是启动慢、吃内存。我自己的主力是 VSCode,因为它足够轻,速度快,通过装扩展就能获得接近 IDE 的体验,而且配置好之后对新手很友好。
3.2 VSCode 中配置 Python 环境的完整流程
VSCode 配置 Python 环境,我按步骤拆解一下。
第一步,安装 Python 扩展。打开 VSCode,左侧工具栏找到扩展图标(四个方块的图标),搜索 “Python”(作者是 Microsoft),点 Install。这个扩展是微软官方维护的,会提供代码高亮、自动补全、调试支持。这一步对应了“vscode python环境配置”和“vscode配置python”这类搜索词背后最核心的需求,也是新手最容易漏掉的一步。
第二步,打开一个文件夹作为工作目录。点菜单栏 File → Open Folder,选中你准备放 Python 代码的文件夹,比如D:\python-learn。
第三步,选择 Python 解释器。按Ctrl+Shift+P打开命令面板,输入 “Python: Select Interpreter”,回车,在弹出的列表里选你刚安装的 Python 版本。如果列表里没出现,点 “Enter interpreter path” 手动找到 python.exe。
第四步,新建一个测试文件。在资源管理器里新建hello.py,输入:
print("hello python")按右上角的运行三角按钮,如果下方输出面板显示hello python,环境配置成功。
我自己的习惯是在 VSCode 的 settings.json 里加一行默认解释器路径,避免多版本 Python 混装时选错。通过命令面板输入 “Preferences: Open User Settings (JSON)”,打开配置文件,加上:
{ "python.defaultInterpreterPath": "C:/Users/你的用户名/AppData/Local/Programs/Python/Python313/python.exe" }这样即使电脑里装了多个 Python 版本,VSCode 也知道该用哪个。
3.3 “python was not found” 报错的根源与解法
这个报错在热搜里出现了完整原文:python was not found; run without arguments to install from the microsoft store,我几乎每周都能在交流群里看到一次。
它的本质是:你在命令行输入python,系统在 PATH 里找不到 python.exe,于是触发了 Windows 的“应用执行别名”机制,把你引导到微软商店去。出现这个报错,有两个最常见原因:
第一,Python 安装时没勾选 “Add Python to PATH”。解法就是重装或者手动加环境变量。
第二,电脑上装了微软商店版的 Python,它会在 PATH 里创建一个指向商店的别名。你在商店安装的 Python 版本没问题,但如果删掉了商店版但别名还在,命令行输入python就会一直弹商店。解法是打开“设置 → 应用 → 高级应用设置 → 应用执行别名”,把python.exe和python3.exe的开关关掉。
顺带说一句,如果你还没有装 Python,系统提示你去微软商店,也别直接点“获取”。微软商店版 Python 和官网安装版在 PATH 管理上有差异,新手用官网版最省心。
3.4 PyCharm 环境配置要点
如果选择 PyCharm,配置过程更简单。装好 PyCharm 后,新建项目时它会自动关联系统里的 Python 解释器。这里只需要注意一个点:右下角解释器版本要用你装的官网版。如果 PyCharm 提示创建虚拟环境,建议勾选,虚拟环境的问题这篇不展开,你先把基础环境跑通再说。
PyCharm 里运行 Python 文件也很直观,右键文件 → Run,或者点右上角的绿色运行箭头。它自带终端和调试器,新手不需要额外配置任何东西就能开始写代码。
4. 基础语法精讲:变量、类型转换与函数
4.1 变量定义与命名习惯
环境配好了,现在开始写真正的代码。Python 定义一个变量,不需要声明类型,直接赋值即可:
name = "张三" age = 25 height = 175.5 is_student = True这四个变量分别是字符串、整数、浮点数、布尔值。Python 会根据你赋的值自动推断类型,这个特性叫动态类型。
变量命名的核心规则很简单:只能由字母、数字、下划线组成,数字不能开头,不能和 Python 关键字重名。但更重要的还是习惯——我建议新手直接养成“见名知意”的命名方式,不要用a、b、c这种没有意义的命名。user_name比un好一万倍,这个习惯越早养成越省事。
4.2 类型转换:从字符串到数字的硬核细节
类型转换是新手逃不开的话题,“python类型转换”这个热搜词的出现率一直很高。最常用的三个转换函数是int()、float()、str()。
num_str = "123" num = int(num_str) # 字符串转整数 print(num + 1) # 输出 124 pi_str = "3.14" pi = float(pi_str) # 字符串转浮点数 print(pi * 2) # 输出 6.28 age = 25 age_str = str(age) # 整数转字符串 print("我今年" + age_str + "岁") # 字符串拼接转换过程中有一个特别容易踩的坑:当字符串里有空格或非数字字符时,int()会直接报错。
num = int("123 ") # 报错:invalid literal for int()因为"123 "末尾带了个空格。解决办法是先调用strip()方法去掉首尾空白:
num = int("123 ".strip()) # 正常运行,输出 123还有一类是用户通过input()输入的内容,默认都是字符串。哪怕你输入的是数字,Python 也会把它当成字符串处理。
age = input("请输入年龄:") # 用户输入 25 print(age + 1) # 报错:str 和 int 不能直接相加 age = int(input("请输入年龄:")) # 先转换 print(age + 1) # 输出 26这些都是实际运行中特别常见的报错,遇到的时候不要慌,先看类型对不对。
4.3 函数、位置参数与默认参数
函数是代码复用的核心工具。定义一个函数用def关键字:
def greet(name): print("你好," + name) greet("张三") # 输出:你好,张三这里name就是位置参数,意思是调用时按位置顺序传入。位置参数最需要注意的点是顺序。比如这个函数:
def introduce(name, age, city): print(f"我叫{name},今年{age}岁,来自{city}") introduce("张三", 25, "北京") # 正确:位置一一对应 introduce("北京", 25, "张三") # 错误:顺序错了,逻辑完全不对第二个调用不会报语法错误,但输出会变成“我叫北京,今年25岁,来自张三”,这种 bug 最难排查,因为它不报错。
默认参数可以给参数一个默认值,调用时可以不传:
def greet(name, greeting="你好"): print(greeting + "," + name) greet("张三") # 输出:你好,张三 greet("张三", "早上好") # 输出:早上好,张三这里有个 Python 经典的坑:默认参数不能是可变对象。比如:
def add_item(item, items=[]): items.append(item) return items print(add_item("苹果")) # 输出 ['苹果'] print(add_item("香蕉")) # 输出 ['苹果', '香蕉'],注意!默认列表被改了第二次调用时,默认列表[]并不是重新创建的,而是第一次调用之后残留的那个列表。要避免这个问题,默认值应该用None,然后在函数内部处理:
def add_item(item, items=None): if items is None: items = [] items.append(item) return items这个坑职场里很多写了两三年 Python 的人都会遇到,新手早点知道是个大优势。
4.4 abs 函数与常用内置函数
Python 内置了很多实用函数,abs()就是其中之一,用来取绝对值:
print(abs(-5)) # 输出 5 print(abs(3.14)) # 输出 3.14除了abs,新手马上就会用到的还有len()(计算长度)、sum()(求和)、max()/min()(取最大最小值)、type()(查看类型)、round()(四舍五入)。这些内置函数不需要 import 任何模块,直接就能用,建议你花十分钟把它们都试一遍。
值得注意的一点是,round()有浮点数精度问题。比如round(2.675, 2)的结果是2.67而不是2.68,原因在于浮点数在计算机内部的存储方式。对精度有严格要求的场景,建议用Decimal,但新手了解这个坑即可,不用深究。
5. 常用库安装与数据处理入门
5.1 pip 安装 numpy 的完整过程与常见坑
numpy是 Python 数据科学的地基库,几乎所有做数据分析的人都会用到。安装命令很简单:
pip install numpy但实际执行中可能遇到的问题不少。最常见的就是下载速度慢或者超时。我用一次实际操作来说明:某次在新的电脑上执行pip install numpy,进度条卡了半天,最后报了一个timed out。原因就是官方源下载速度不稳定,我在命令行加上国内镜像源重新执行:
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple几十秒就装好了。如果你之前已经按 2.4 节的方法永久配置了国内源,这一步都不会遇到。
装完之后验证是否成功,在命令行输入:
pip show numpy输出版本信息说明安装成功。也可以在 Python 里直接import numpy试运行,没有报错就说明可以用了。
5.2 cv2 等图像处理库的安装问题
“python下载cv2”这个热搜词非常典型,因为很多人第一次接触cv2时会搜pip install cv2,然后会发现装不上。
实际上,cv2的正确包名是opencv-python,不是cv2。cv2只是库的模块名,安装包的名字一点都不一样。正确命令是:
pip install opencv-python装完之后:
import cv2 print(cv2.__version__)能输出类似4.12.0.80就说明安装成功。这个坑的来源是 Python 的包名和模块名不完全相同,除了 cv2/opencv-python,还有PIL/Pillow、sklearn/scikit-learn等。遇到装不上的情况,第一反应去 PyPI 搜一下包名,不要硬按模块名去 pip install。
5.3 matplotlib 绘图与横坐标太密的实战解法
matplotlib是最常用的绘图库,安装命令pip install matplotlib。用来画折线图时,最容易遇到的问题就是“画图横坐标太密集”。
先看一个典型场景:
import matplotlib.pyplot as plt x = list(range(100)) y = [i**2 for i in x] plt.plot(x, y) plt.show()如果x有 100 个点,matplotlib 默认会在横轴上把 100 个标签全标出来。当屏幕宽度放不下时,文字就会互相叠在一起,变成一团黑。解决办法有三个,我按照“最推荐优先”的顺序排一下。
方法一,旋转标签角度并设置间隔显示:
plt.plot(x, y) plt.xticks(range(0, 100, 10), rotation=45) # 每隔10个显示一个,旋转45度 plt.show()用plt.xticks()手动控制显示哪些刻度,这是最可控的解法。range(0, 100, 10)表示只显示第 0、10、20……90 共 10 个刻度,45 度旋转后就不重叠了。
方法二,用MaxNLocator自动控制刻度数量:
from matplotlib.ticker import MaxNLocator plt.plot(x, y) ax = plt.gca() ax.xaxis.set_major_locator(MaxNLocator(nbins=10)) # 最多显示10个刻度 plt.show()MaxNLocator会智能地挑选刻度位置,适合不关心具体显示哪些值、只要“看起来清爽”的情况。
方法三,如果横轴是日期,用AutoDateLocator。这个方法在处理时间序列时特别好用,matplotlib 会自动根据时间跨度选择“每月一个刻度”还是“每年一个刻度”:
from matplotlib.dates import AutoDateLocator ax = plt.gca() ax.xaxis.set_major_locator(AutoDateLocator()) plt.show()核心思路就一句话:别让 matplotlib 把每个点都标出来,手动控制显示密度。我现在每次画图都会先想清楚“横轴有多少个点”,超过二三十个就直接用plt.xticks()做间隔控制,避免最后输出一堆糊在一起的标签。
5.4 新手友好小项目:爱心代码与李白打酒
基础语法学完,最容易让人兴奋的是做点小项目。这里分享两个适合新手的经典例子。
一个是爱心代码。用数学函数画一颗爱心,是很多人的第一个“有画面”的 Python 程序:
import numpy as np import matplotlib.pyplot as plt t = np.linspace(0, 2 * np.pi, 1000) x = 16 * np.sin(t)**3 y = 13 * np.cos(t) - 5 * np.cos(2*t) - 2 * np.cos(3*t) - np.cos(4*t) plt.figure(figsize=(6, 6)) plt.plot(x, y, color='red', linewidth=2) plt.axis('equal') plt.show()这个例子把 numpy 的数组计算和 matplotlib 的画图功能都串起来了。np.linspace(0, 2 * np.pi, 1000)生成 1000 个点,代入参数方程之后得到 x 和 y 坐标,最后连线画出心形。运行出来那一瞬间的成就感,是纯学语法给不了的。
另一个是“李白打酒”,这是一个经典的逻辑题,原文是:李白街上走,提壶去打酒;遇店加一倍,见花喝一斗;三遇店和花,喝光壶中酒。试问壶中原有多少酒?
用 Python 穷举或者倒推都很方便。
def original_wine(): for x in range(1, 100): # 倒着推:最后一次喝光,倒推回去 wine = 0 # 遇到店酒翻倍,遇到花喝一斗 # 顺序是店、花、店、花、店、花 for action in "店花店花店花": if action == "花": wine += 1 # 倒推时,喝掉的1斗要加回来 else: wine /= 2 # 倒推时,翻倍要还原 if abs(wine - x) < 0.0001: return x return None print(original_wine())这个程序的思路是倒推:最后一次喝完酒是 0 斗,遇到一次花就把喝掉的那斗加回来,遇到一次店就把翻倍的酒还原。这个题目很适合训练逻辑思维,也顺带练习了循环和条件判断。
6. 常见报错速查表与学习节奏建议
6.1 新手高频报错速查表
我把新手前三周最常遇到的报错整理成了一张速查表,你可以直接收藏起来,遇到问题对照着看。
| 报错信息 | 出现原因 | 解决办法 |
|---|---|---|
| python was not found | PATH 未配置或商店别名触发 | 重装 Python 时勾选 Add to PATH,或关闭应用执行别名 |
| pip 不是内部或外部命令 | Scripts 目录不在 PATH 中 | 卸载重装勾选 Add to PATH,或手动加 Scripts 路径 |
| ModuleNotFoundError: No module named 'numpy' | 库未安装,或安装在另一个 Python 环境里 | 执行 pip install numpy;检查解释器是否选对 |
| SyntaxError: invalid syntax | 语法错误,常见于中文输入法标点 | 检查代码里是否混入中文字符、是否漏写冒号 |
| NameError: name 'xxx' is not defined | 变量名拼写错误或未定义 | 检查变量名拼写和定义位置 |
| IndentationError: unexpected indent | 缩进不一致 | Python 对缩进敏感,统一用 4 个空格 |
| TypeError: can only concatenate str | 字符串和数字直接相加 | 用 str() 做类型转换后再拼接 |
| invalid literal for int() | 字符串转整数时包含非数字内容 | 先 strip() 去空格,或检查输入内容 |
我在这里补充一个特别想强调的排查思路:拿到报错先读最后一行,不要从第一行看起。Python 的报错信息把真正的原因放在最后面,前面那一大串是调用栈,新手还没学会看。你自己第一次运行报错时,先读最后一行,按照上面表格的思路排查,往往比从头一页页找要快得多。
6.2 学习节奏与系列规划
Python 学习第一讲的内容到这里,你已经完成了环境搭建、编辑器配置、基础语法入门、常用库安装这几件事。按照我自己的经验,这个阶段大概需要 3 到 7 天。千万不要着急,不要看别人两周就爬虫了,自己两天还卡在变量上就开始焦虑。编程学习不是比速度,是比谁能坚持下来。
接下来这个系列会按照这条线继续走:基础语法 → 数据结构 → 文件操作 → 异常处理 → 实际项目。每一篇之间层层递进,上一篇的知识点会在下一篇里反复用到。你只需要跟上每一篇,把里面的示例代码自己敲一遍——注意,是自己敲一遍,不是复制粘贴。敲错了、报错了、想办法改对了,这个过程才是真正进步的地方。
我自己带过不少人,体会最深的一点是:新手最容易缺的不是教程,而是“把报错当朋友”的心态。报错不是程序在嘲讽你,它在用一种很笨的方式告诉你问题出在哪。学会读报错,你就学会了自学。这是任何教程都给不了你的能力。