第3章 环境准备:把工具箱收拾利索
说实话,我见过太多初学者在环境配置上栽跟头了。明明代码逻辑是对的,结果跑起来全是「ModuleNotFoundError」或者「Python 版本不兼容」。嗯,这章咱们就把这事一次搞定。
我们的目标很明确:装好 Python,建个干净的虚拟环境,然后装上 boto3。这套流程走完,后边写代码才能顺溜。
3.1 选对 Python 版本
先聊 Python 版本。boto3 官方支持 Python 3.8 以上,但我个人建议直接用 Python 3.10 或 3.11。原因很简单:3.8 明年就进 EOL(End of Life)了,3.9 也快了。何必在一个快淘汰的版本上折腾?
我在项目中遇到过,某团队用 Python 3.7 写了一套自动化脚本,结果 AWS SDK 更新后直接报依赖冲突。那个周末他们怎么过的,你想想看。
| Python 版本 | boto3 兼容性 | 我的建议 |
|---|---|---|
| 3.8 | 兼容 | 能用但别用了 |
| 3.9 | 兼容 | 过渡期版本 |
| 3.10 | 兼容 | 推荐 |
| 3.11 | 兼容 | 强烈推荐 |
| 3.12 | 兼容 | 可选(新特性多) |
检查现有版本:在终端敲 python --version 或 python3 --version。如果系统自带的是 2.x 系列,赶紧装个新的。
3.2 安装 Python(三种场景)
怎么装?分平台来聊。
macOS
我推荐用 Homebrew,干净利落:
brew install python@3.11
装完验证一下:
python3.11 --version
如果你不想动系统自带 Python,这是最安全的方式。为什么?Homebrew 会把新版本装在独立的 /usr/local 或 /opt/homebrew 下,不会和系统工具打架。
Windows
去 python.org 下载安装包。唯一要注意的:安装时勾选「Add Python to PATH」。这个复选框我每次都会手动确认,因为不勾的话命令行认不出 python 命令,你还要自己配环境变量,烦得很。
Linux(Ubuntu/Debian 系)
用 deadsnakes PPA 装:
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.11 python3.11-venv python3.11-dev
千万不要动系统自带的 Python。Ubuntu 的系统工具(比如 apt 本身)依赖 Python 3.10,你把它卸了或者升级了,系统可能会崩。我曾经在某台服务器上手贱执行了 sudo apt remove python3……后面的事不提了。
3.3 虚拟环境 —— 隔离是美德
你可能会问:为什么非要虚拟环境?说白了,就是为了防污染。不同的项目依赖不同的包版本,全装到全局 site-packages 里,迟早要出乱子。
Python 3.3+ 自带 venv 模块,不用额外装任何东西。我个人习惯用 venv 而不是 virtualenv 或 conda,因为它是标准库的一部分,到哪都一样。
创建虚拟环境的步骤非常简单:
- 进到你的项目目录(比如
secrets-manager-tutorial)。 - 执行
python3.11 -m venv .venv。 - 激活它。
代码看看:
mkdir ~/projects/secrets-manager-tutorial
cd ~/projects/secrets-manager-tutorial
python3.11 -m venv .venv
激活命令分平台:
| 操作系统 | Shell | 激活命令 |
|---|---|---|
| macOS / Linux | bash / zsh | source .venv/bin/activate |
| Windows | cmd | .venv\Scripts\activate.bat |
| Windows | PowerShell | .venv\Scripts\Activate.ps1 |
激活成功后,命令行前面会出现 (.venv) 前缀。嗯,看到这个就说明环境隔离好了。
退出虚拟环境用 deactivate,无参数,直接退出。我平时工作开好几个终端,每个终端激活不同的虚拟环境,互不干扰。
3.4 安装 boto3
虚拟环境激活后,再装 boto3 就很简单了:
pip install boto3
这条命令会安装 boto3 和它的核心依赖(botocore、jmespath、s3transfer 等)。如果你想知道装了哪些包,可以执行:
pip list
输出大概长这样:
Package Version
--------------- -------
boto3 1.34.0
botocore 1.34.0
jmespath 1.0.1
pip 24.0
python-dateutil 2.8.2
s3transfer 0.10.0
setuptools 65.5.0
urllib3 2.0.7
重点关注 boto3 和 botocore 的版本号。botocore 是 boto3 的底层库,负责处理 HTTP 请求和签名,它俩版本最好匹配。
我曾经在解决一个问题时,不小心装了 boto3==1.28.0,但 botocore 还是 1.29.0,结果调用 Secrets Manager 的 get_secret_value 报了一个奇怪的签名错误。排查了半天才发现版本不对。所以记住:最好用 pip install boto3 不加版本号,让它自动匹配。
3.5 验证安装是否成功
搞定了吗?写段代码验证一下:
python -c "import boto3; print(boto3.__version__)"
如果打印出版本号(比如 1.34.0),说明安装成功。如果没有报错,但也没输出……检查一下是不是虚拟环境没激活。
更直观的验证:看看能不能列出 boto3 里的核心客户端:
python -c "import boto3; client = boto3.client('secretsmanager'); print(type(client))"
正常输出是:
<class 'botocore.client.SecretsManager'>
看到这个类名,恭喜你——环境准备完毕。
3.6 本章知识框架
下面这张图把咱们刚才做的事情串起来了:
图里五个步骤环环相扣。从安装 Python 开始,选对版本,创建并激活虚拟环境,最后装 boto3。每一步都有对应的验证点——装完 Python 检查版本,装完 boto3 写一段 import 代码。这是专业工程师的基本素养:每步都确认,不留隐患。
核心要点:
- Python 版本选 3.11 或 3.12,别用 3.8 以下的。
- 虚拟环境用
python -m venv创建,必须激活后才能装包。 - boto3 用 pip 安装,不加版本号,让依赖自动匹配。
- 每完成一步,用命令行验证是否成功。
好了,环境准备就这些。你现在已经有了一个干净的 Python 环境和 boto3 SDK。下一站就是正式操作——配置 AWS 凭证,然后第一次调用 Secrets Manager。