第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,因为它是标准库的一部分,到哪都一样。

创建虚拟环境的步骤非常简单:

  1. 进到你的项目目录(比如 secrets-manager-tutorial)。
  2. 执行 python3.11 -m venv .venv。
  3. 激活它。

代码看看:

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 3.10+ 推荐 3.11 / 3.12 python -m venv .venv source .venv/bin/activate pip install boto3 检查点 python --version 验证版本是否正确 验证命令 import boto3 print(boto3.__version__)

图里五个步骤环环相扣。从安装 Python 开始,选对版本,创建并激活虚拟环境,最后装 boto3。每一步都有对应的验证点——装完 Python 检查版本,装完 boto3 写一段 import 代码。这是专业工程师的基本素养:每步都确认,不留隐患。

核心要点:

  • Python 版本选 3.11 或 3.12,别用 3.8 以下的。
  • 虚拟环境用 python -m venv 创建,必须激活后才能装包。
  • boto3 用 pip 安装,不加版本号,让依赖自动匹配。
  • 每完成一步,用命令行验证是否成功。

好了,环境准备就这些。你现在已经有了一个干净的 Python 环境和 boto3 SDK。下一站就是正式操作——配置 AWS 凭证,然后第一次调用 Secrets Manager。