K 的一隅

Python Python 语言核心

先把解释器装到能跑脚本:Python 环境怎么搭

解释器、REPL、pip 与标准库各管什么;版本管理、虚拟环境隔离,以及最小可运行验证清单。

6 分钟阅读 更新于 2026-07-28
本文目录

你刚拿到一台新机器,想跑一段 Python 脚本。终端里敲 python,可能弹出的是系统自带的旧版本,也可能根本没有这个命令。环境没搭好之前,任何语法讨论都落不到可执行的代码上。这篇按清单走一遍:先分清几个容易混的概念,再装解释器、建隔离环境,最后用一个小脚本验证整条链路。

四个名字先对齐

解释器(interpreter)是读 .py 文件并执行字节码的程序,也就是你终端里调用的 pythonpython3。它负责「跑代码」,不负责帮你装第三方库。没有解释器,.py 只是文本;有了它,文本才变成可执行的程序。

REPL(Read-Eval-Print Loop)是解释器提供的交互模式:敲一行、立刻看结果。终端输入 python3 进入,提示符变成 >>>。适合试语法、验表达式,不适合替代项目结构——脚本还是要写成 .py 文件再执行。REPL 里定义的变量,退出后就没了;持久逻辑应放在模块文件里。

标准库(stdlib)随解释器一起安装,比如 pathlibjsondatetimeurllibimport json 不需要额外下载,因为已经绑在解释器发行版里。标准库覆盖文件 I/O、网络基础、数据结构扩展等,但刻意不包含各家框架——Web 框架、测试增强、HTTP 客户端通常走第三方。

pip 是 Python 的包安装工具,从 PyPI 等索引拉取第三方包。标准库之外的依赖(如 httpxpytestdjango)靠 pip 装进当前环境。很多人把「装了 Python」和「能 import 任意库」混为一谈——后者还要 pip 和正确的环境上下文。pip list 看到的是当前激活环境里的包,不是全世界装过的包。

解释器、REPL、pip、stdlib 怎么配合

典型工作流:用解释器跑脚本或进 REPL;脚本里 import 标准库模块直接可用;缺第三方库时用 pip 安装到当前环境;安装后再 import,解释器从该环境的 site-packages 加载。

python
import json                              # 标准库,无需 pip
from pathlib import Path

data: dict[str, int] = {"a": 1}
Path("out.json").write_text(json.dumps(data), encoding="utf-8")

若下一行要 import httpx,得先在这个环境里 pip install httpx。装错环境(比如系统 Python 而非项目 venv)是最常见的「我明明 pip install 了却 import 失败」原因。

为什么版本管理值得单独提

不同项目可能要求 Python 3.10 或 3.12。系统自带的 /usr/bin/python3 往往不能随意升级,升级还可能影响系统工具(如 Linux 发行版依赖特定 python3 跑包管理脚本)。pyenv 这类版本管理器让你在用户目录维护多个解释器版本,按目录或全局切换。概念上它解决的是「同一台机器上并存多个 Python 版本」——不必卸载旧版,也不必强行统一。

macOS 上也可以从 python.org 安装官方 pkg,或 Homebrew 装 python@3.12。选一种你能稳定复现的路径即可;关键是知道当前 shell 里 which python3 指向哪里。团队协作时,把期望版本写进 README.python-version(pyenv 会读),比口头说「用新一点的 Python」可靠。

venv:把依赖关进各自的房间

全局 pip install 会把包装进「当前正在用的那个 Python」。项目 A 要 Django 4,项目 B 要 Django 5,混在一个环境里迟早冲突。venv 模块创建轻量虚拟环境:一套独立的 site-packagespython 可执行文件链接,互不干扰。

bash
python3 -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
which python3               # 应指向 .venv 内
pip install httpx           # 只装进这个 venv
deactivate                  # 退出虚拟环境

激活后,终端提示符前通常出现 (.venv)。此后 pythonpip 都指向隔离环境;退出后恢复系统默认。.venv 目录一般加入 .gitignore——它可从 requirements.txt 或锁文件重建,不必进版本库。

最小脚本:从文件到输出

REPL 验证了交互模式;项目里更常见的是脚本文件:

python
# hello.py
def greet(name: str) -> str:
    return f"Hello, {name}"

if __name__ == "__main__":
    print(greet("Python"))

保存后,在项目目录执行:

bash
python3 hello.py
# Hello, Python

python3 hello.py 启动解释器,读取文件、编译为字节码、执行。__name__ == "__main__" 表示「被直接运行」而非被 import——后面模块化会反复用到,这里先记住:直接跑脚本时这一分支会执行;别的文件 import hello 时不会自动打印。

IDE 不是必需品

VS Code、PyCharm、Cursor 等提供补全、调试、集成终端,但不是运行 Python 的前提。编辑器负责写文件;真正执行的是解释器。很多人第一次学 Python 时被 IDE 配置卡住——其实终端 + 任意文本编辑器就足够完成「写 .py → 跑起来 → 看输出」的闭环。IDE 是效率工具,可以等项目结构复杂了再加。调试器、测试运行器同样依附于已激活的 venv 和解释器路径。

验证清单

按顺序勾选,任何一步失败都先停在这一步排查:

步骤命令 / 操作期望结果
1python3 --version显示 3.x,且版本符合项目要求
2python3 -c "print('ok')"终端输出 ok
3进入项目目录,python3 -m venv .venv生成 .venv 目录
4source .venv/bin/activatewhich pip路径在 .venv
5pip install --upgrade pip无报错
6创建并运行 hello.py输出 Hello, Python
7deactivatewhich python3不再指向 .venv

第 4 步失败,多半是忘了 activate,或者 venv 建在了别的目录。第 6 步失败,检查文件名、当前工作目录,以及是否用了激活后的 python。若 pip 报权限错误,不要用 sudo pip 装项目依赖——回到第 3 步确认 venv。

常见误解

  • 「装了 Anaconda 就不用 venv」:Conda 环境也是隔离,只是工具链不同。概念一样——别在 base 环境里堆所有项目的依赖。
  • 「pip 和 apt/brew 装 Python 是一回事」:系统包管理器装的是发行版;pip install 装的是 Python 包索引里的 wheel。混用时要清楚谁在管哪个命名空间。
  • 「3.12 能跑 2.7 的代码」:大版本之间语法不兼容。旧项目可能仍要旧解释器,这正是 pyenv 存在的理由之一。
  • 「REPL 里能 import,脚本里就该能」:若 REPL 在 venv 里启动、脚本用系统 python3 跑,两边看到的包集合不同。统一用同一解释器路径。

把依赖写进文件

小项目可以口头记住装了什么;稍大一点就该有 requirements.txtpyproject.toml,方便同事和 CI 复现:

bash
pip freeze > requirements.txt
pip install -r requirements.txt

freeze 列出当前环境全部包及精确版本;install -r 按清单批量安装。venv 激活状态下执行,装进去的仍是隔离环境里的包,不会污染系统解释器。换机器时「建 venv → install -r」是标准起手式。

环境搭稳之后,下一篇可以直接进入语法:缩进、名字、基本类型,不再被「命令找不到」打断。