Windows 上装 Python 只有一件事容易错:安装第一屏那个「Add python.exe to PATH」的勾。不勾, 命令行里敲 python 就没反应,后面所有步骤都会卡住。 装完要确认四样:版本号、实现、位数、PATH 里找不找得到。 再建一个虚拟环境,让每个项目有自己的一套包。 这一节把检查做成一张表,实跑结果是: 3.13.14/CPython/64 位/python 找到/py 启动器没找到/已装 90 个包。
第 1 章讲完了原理,从这一节开始动手。第 2 章五节全是环境,跟算法没关系。 装不好环境是初学者最常卡的一关,所以这五节写得比算法章节细。 本节只讲 Windows;Mac 在下一节。两台机器都用的写法放在 2.3、2.4 的末尾。
一、装哪个
三条路:python.org 官方安装包、Microsoft Store、Anaconda。 官方安装包最干净,装出来就是一个解释器加 pip;Store 版省事但路径埋在系统深处,出问题不好查; Anaconda 一次给你几百个科学计算包,代价是体积几个 G、 而且它自己的包管理器和 pip 会打架(2.3 节细说)。 本书的路子:先装官方包,缺什么再 pip 装什么。等你确实需要一个开箱即用的数据环境, 再考虑 Anaconda。
二、安装时那三个勾
从 python.org 下 Windows installer(64-bit),双击,第一屏底下有两个勾: 「Add python.exe to PATH」必须勾上,「Install launcher for all users」建议勾。 第二个装了才有 py 这个启动器,多版本共存时用得上。 第二屏选 Customize 的话,会多出 pip、tcl/tk、测试套件这些选项,默认全勾就行。 pip 一定不能取消,否则连装包的工具都没有。 为什么不勾 PATH 就出事?因为「敲 python 就能跑」靠的是系统在 PATH 列的那串目录里找 python.exe。 安装包没把这目录加进去,命令行自然找不到。
三、装完确认四件事
开一个新的命令提示符(必须新开,旧窗口的 PATH 还是旧的),依次敲:
python --version
pip --version
where python
python -c "import sys; print(sys.executable)"
四个都答得出来才算装成。
第三条 where python 尤其重要:
如果它列出两个以上路径,说明机器上有多份 Python,你后面 pip 装的包可能进了另一份。
第四条打出来的路径,应该和第三条的第一个一致。不一致就是 PATH 顺序有问题。
四、虚拟环境:一个项目一套包
不建虚拟环境的后果:A 项目要 numpy 1.x,B 项目要 numpy 2.x,两个项目共用一个 site-packages,
只能留一个版本。
做法很简单:在项目目录里 python -m venv v,就会多出一个 v 目录。
激活它(v\Scripts\activate.bat),之后 pip 装的东西全进这个目录。
venv 里的目录结构值得记住:Scripts 放可执行文件(python.exe、pip.exe、activate.bat),
Lib\site-packages 放包,pyvenv.cfg 记着它指向哪个基础解释器。
它不是复制一份 Python,只是造了个壳。
所以建一个 venv 只要一两秒,删掉也只是删个目录,系统和别的环境一点不受影响。
五、装坏了怎么退
三条退路,按轻重排:停用当前环境(敲 deactivate)、删掉 venv 目录(整个目录删,包全没)、
卸载 Python 重装。
卸载前先看 py -0 或 where python,确认机器上到底有几份。
有多份时,控制面板里卸载的可能不是你在用的那份。
还有一个常见故障:装完 python 命令能跑,但 pip 不行。
先用 python -m pip --version 试——能跑就说明只是 pip.exe 没进 PATH,
以后统一写 python -m pip install xxx 就绕过去了。
六、动手 Demo:把环境查一遍
这一段不装任何东西,只做检查:解释器是哪一份、PATH 里找不找得到、py 启动器有没有、已经装了多少包, 最后建一个 venv 看它里面的结构。
import os, sys, platform, shutil, subprocess, tempfile
print(sys.version.split()[0]) # 3.13.14
print(platform.python_implementation()) # CPython
print(os.path.basename(sys.executable)) # python.exe
print(shutil.which("python")) # PATH 里第一个 python
print(shutil.which("py")) # Windows 启动器在不在
# 建一个虚拟环境,装完看一眼里面的结构,用完就删
tmp = tempfile.mkdtemp(prefix="venv43_")
subprocess.run([sys.executable, "-m", "venv", os.path.join(tmp, "v")],
check=True)
print(os.listdir(os.path.join(tmp, "v"))) # Include Lib Scripts
print(os.listdir(os.path.join(tmp, "v", "Scripts")))
实跑输出:
--------------------------------------------------------------------
Python 的安装~Windows 篇~:把环境查一遍
--------------------------------------------------------------------
检查项 结果
--------------------------------------------------------------
解释器版本 3.13.14
实现 CPython
可执行文件 python.exe
所在目录 Scripts
操作系统 Windows-10-10.0.19045-SP0
位数 64 位
PATH 里的 python 找到
PATH 里的 python3 找到
py 启动器 没找到
已装包数 90
venv 里 python 3.13.14
venv\Scripts 文件数 10
这张表就是一个装完 Python 的人该确认的全部东西。
**版本对、实现对、位数对,这三项过了,语言本身就没问题;**
**PATH 里找得到,才说明你在任意目录敲 python 都能跑起来。**
py 启动器那一行是 Windows 独有的:装了它才能用 py -3.13 这种写法挑版本,
不装也不影响 python 命令,只是多版本共存时没这么方便。
venv 那两行是本节的重点:**虚拟环境不是复制一份 Python,是造一个指向它的壳。**
壳里只有 pip 和几个启动脚本,包是空的;装什么都进这个壳,
壳一删,系统那边一点痕迹不留。
版本 3.13.14、实现 CPython、64 位、PATH 里 python 找到、py 启动器没找到。前四项都对,
说明语言本身没问题;py 启动器缺了,只影响多版本切换,不影响使用。
注意「所在目录 Scripts」这一行:解释器住在 ...\envs\default\Scripts\ 下面。
看到路径里带 envs 或 venv,就说明你正在一个虚拟环境里,这时候 pip 装的包都进这里,
不会污染系统。
venv 那两行是把「壳」拆开看:顶层只有 Include、Lib、Scripts 和 pyvenv.cfg 四样,
Scripts 里 10 个文件全是启动脚本和 pip——一个计算包都没有。
这解释了一个常见困惑:新建的 venv 里 import numpy 会失败。
因为它本来就是空的,你要在里面重新 pip install numpy。
「环境建好了但跑不了代码」不是坏,是还没装包。
30 秒实验
- 在命令提示符里敲
where python,看它列出几个路径; 再敲python -c "import sys; print(sys.path)",数数有几条。 - 不激活 venv,直接敲
v\Scripts\python.exe -c "import sys; print(sys.prefix)", 看它报的是哪个目录。 - 把 PATH 里 Python 那一条临时删掉,再敲 python,看报什么错——这就是没勾 PATH 的样子。
常见误区
- 装完不新开窗口就去敲 python。 旧窗口的 PATH 是启动时读的, 不改环境变量它永远看不见新装的路径。
- 以为装了 Anaconda 就等于装了 Python,可以随便 pip。 用 Anaconda 就用 conda 装, 混着来容易把 conda 的环境弄坏,而且 pip 装的包 conda 看不见。
- 把包装在系统 Python 里。 装一次爽,出问题要卸载整个 Python。 每个项目一个 venv,删掉就是干净重来。
自测三问(点开对答案)
1. 「Add python.exe to PATH」不勾,会出什么问题? —— 命令行找不到 python.exe,敲 python 会提示「不是内部或外部命令」。 程序其实装了,但系统不知道该去哪儿找它。 2. venv 目录里 Scripts、Lib、pyvenv.cfg 各是干什么的? —— Scripts 放可执行文件和激活脚本,Lib\site-packages 放这个环境装的包, pyvenv.cfg 记着它基于哪个基础解释器。 3. 为什么新建的 venv 里 import numpy 会失败? —— 因为 venv 是空壳,只有 pip,没有从系统环境继承任何第三方包。要用就得在这个环境里再装一遍。Windows 这套走完了,下一节是 Mac。 Mac 上最大的坑不一样——系统自带的那份 Python 可能是个很旧的版本,直接敲 python 会踩到它。
- ☐ (本节完,下一节 2.2 Python 的安装~Mac 篇~)