Python 环境:解释器、首次运行与虚拟环境
Python 安装与首次运行
选择安装方式
先看项目要求的 Python 版本。macOS 和 Windows 可从 Python 官方下载页选择对应平台安装方式;Linux 优先使用发行版提供的 Python 3 包。不要替换系统管理工具依赖的 Python。
Linux 的包名、安装权限和更新周期由发行版决定。例如 Debian/Ubuntu 常见为 python3、python3-venv、python3-pip;这些名字不是所有 Linux 都通用。
已有 Homebrew、系统包管理器或版本管理器时,优先沿用项目约定,避免为了“升级”而叠加另一套全局安装。
验证实际解释器
安装完成后新开终端。Windows 通常可用 python 或 py,macOS/Linux 通常用 python3;以下正文统一写 python,请替换成自己验证过的命令。
python --version
python -c "import sys; print(sys.executable)"
python -m pip --version第一行确认版本,第二行确认完整路径,第三行确认 pip 属于同一个解释器。找不到 pip 时按所用安装渠道的文档补装,不要盲目用另一条 pip 命令。
Windows 若跳到 Microsoft Store 或只显示应用执行别名,说明当前命令尚未解析到可用解释器;检查安装情况与 PATH,再重开终端。IDE 中也应选择相同解释器。
交互执行
解释器负责执行 Python 程序;编辑器和 IDE 是编写、调试程序的工具,仍需选择解释器。CPython 是常见实现,不能把其字节码机制当成所有实现的语言定义。
终端运行 python 进入 REPL。>>> 是提示符,不要复制进 .py 文件。
>>> 2 + 3
5
>>> print("hello, Python")
hello, Python
>>> help(print)多行定义以空行结束;用 exit() 离开。REPL 适合试表达式,正式程序保存为脚本。
首次运行脚本
把下面一行保存为 hello.py。终端先进入文件所在目录,再运行 python hello.py,应输出 hello, Python。交互提示符 >>> 不写入文件。
print("hello, Python")交互执行便于试一行代码,脚本则保存可以重复运行的步骤。函数、命令行参数和 -m 执行模块在 函数、模块与包中继续学习。
下一步与练习
在交互提示符和 hello.py 中分别修改问候文字,确认两种方式的输出,再按 开发环境为项目创建 .venv。
完整平台选项见 Windows 使用说明、macOS 使用说明 和 Unix 使用说明。安装器界面和命令可能随版本变化,以对应版本文档为准。
练习核对
两处都改成 print("hello, learner") 时,REPL当场显示该文本;脚本必须保存后从其所在目录运行,才会显示同一行。只修改REPL不会改变磁盘上的hello.py。建立 .venv 后打印 sys.executable,预期路径位于该项目的 .venv;若仍指向系统目录,先检查实际使用的命令或IDE解释器。这里给出预期,未安装或运行解释器示例。
Python 虚拟环境与开发工具
项目虚拟环境
venv 是标准库提供的虚拟环境工具,用于隔离项目安装的包;无需为了创建环境先安装第三方 virtualenv。它隔离依赖,不隔离操作系统权限。
python -m venv .venv按当前 shell 激活:
| 环境 | 命令 |
|---|---|
| PowerShell | .\.venv\Scripts\Activate.ps1 |
| Windows cmd | .venv\Scripts\activate.bat |
| macOS/Linux bash、zsh | source .venv/bin/activate |
激活后运行 python -c "import sys; print(sys.executable)" 确认路径,deactivate 退出。激活只调整 shell 的命令搜索路径,也可以直接执行 .venv 中的解释器。PowerShell 无法运行激活脚本时可先用 .\.venv\Scripts\python.exe,不必修改全局执行策略。详见 venv 文档。
依赖操作
python -m pip install requests
python -m pip install -r requirements.txt
python -m pip list
python -m pip check
python -m pip uninstall requests安装命令会访问包索引;示例包不是本系列的必需依赖。团队项目优先按已提交的依赖清单安装,不任意升级到 latest。pip freeze 能输出当前环境快照,但不等于自动解决跨平台兼容性或锁定所有外部工具。
测试与检查
先看项目已有配置与命令。标准库测试可运行 python -m unittest discover;项目使用 pytest 时才安装并运行 pytest。
学会函数后可先用 assert 检查返回值;需要组织独立测试时,完整的标准库 unittest 示例见 类与实例中的测试练习。初次配置环境时先确认命令使用同一解释器即可。
Pylint、autopep8、coverage 等均是按项目选用的第三方工具,不属于语言内置命令。例如已安装 coverage 和 pytest 时可用 python -m coverage run -m pytest、python -m coverage html。报告格式依工具实际支持项选择,不能假定 Pylint 内置 HTML 输出。
练习
在虚拟环境内外分别打印解释器路径。学完类以后,再在虚拟环境中运行上述链接的标准库测试。能够解释“包安装到了一个环境,程序却在另一个环境运行”时为什么会出现 ModuleNotFoundError。
练习核对
提示:比较完整路径,不只比较版本号。虚拟环境内应指向 .venv/Scripts/python.exe(Windows)或 .venv/bin/python(Unix),环境外应指向原解释器;直接调用虚拟环境路径也有效。两个环境即使版本相同,包搜索目录仍可不同,所以A环境安装的包不保证B环境可导入。类课的 test_total.py 保存后,需进入其目录再用所选解释器执行 -m unittest test_total,预期一个测试通过;本轮未运行该命令。
继续阅读
- 开发实践
- 排错
- 开发实践