4. 环境搭建:安装 Python,配置虚拟环境,安装 boto3 及相关依赖

好,咱们正式开始动手。这一章我把它叫做「地基工程」——环境搭好了,后面所有加密上传下载的代码才能跑得顺。

你可能觉得装个 Python 嘛,谁不会?但我见过太多人在这一步翻车——版本不对、依赖冲突、凭据漏配,折腾半天还在原地打转。所以咱们一步步来,稳一点。

4.1 Python 版本选择与安装

推荐 Python 3.8 及以上。我个人习惯用 3.10,boto3 和加密库的兼容性都很好。如果你装的是 3.7 以下,部分依赖可能会报错。

  • Windows:去官网下载安装包,注意勾选「Add Python to PATH」。
  • macOS:用 Homebrew 安装 brew install python@3.10。
  • Linux:大部分发行版自带 Python 3,但版本可能偏旧。建议用 pyenv 管理多版本,或者在 Ubuntu 上装 python3.10 的 PPA。

避坑指南:安装路径不要包含中文或空格。我曾经遇到过一位同事,Python 装在「程序文件」目录下,结果 pip 死活找不到模块——因为编码问题。

安装完成后,在终端验证:

python --version
pip --version

4.2 虚拟环境:为什么需要它?

说白了,虚拟环境就是给每个项目一个独立的 Python 小房间。这样你在这个项目里装 boto3 2.0,那个项目里装 boto3 1.28,互不打架。

Python 官方从 3.3 开始就内置了 venv,不需要额外安装。我个人推荐直接用 venv,够用、轻量。有些同学喜欢用 conda,但咱们这个课程用 venv 就够了。

创建虚拟环境:

mkdir sdk-demo
cd sdk-demo
python -m venv venv

这里的第二个 venv 是环境目录名,你也可以叫别的名字,比如 .venv。我习惯叫 venv,短,好记。

激活虚拟环境:

  • Windows:venv\Scripts\activate
  • macOS / Linux:source venv/bin/activate

激活后,终端前面会出现 (venv) 前缀。嗯,看到这个就说明你已经在「小房间」里了。

小技巧:每次打开新终端,第一件事就是激活虚拟环境。我一开始总忘记,后来在 .bashrc 里加了个 alias:alias va='source venv/bin/activate',敲两个字母搞定。

4.3 安装 boto3 及核心依赖

确保虚拟环境已激活,然后执行:

pip install boto3

boto3 会自动拉取它依赖的 botocore、jmespath、s3transfer 等库。不过对于加密上传下载,我们还需要额外的加密库:

pip install cryptography

cryptography 是 Python 生态中主流的加密库。boto3 本身不提供客户端加密功能,我们需要用它来生成密钥、加密数据流。

完整的依赖清单可以整理成这样一张表:

依赖包 用途 是否必需
boto3 AWS SDK 核心库,负责与 S3 交互 必需
cryptography 提供 AES、RSA 等加密算法 必需(加密上传场景)
requests 可选泛用 HTTP 客户端,部分高级场景使用 可选
pyyaml 用于读取配置文件(如密钥文件) 可选

验证安装:

在终端里进入 Python 交互环境:

python
>>> import boto3
>>> import cryptography
>>> print(boto3.__version__)
1.28.54

没有报错,就说明安装成功。

4.4 使用 requirements.txt 管理依赖

当你和团队协作,或者换一台电脑继续开发时,把依赖写死到文件里会省很多事。生成方法:

pip freeze > requirements.txt

这个文件会把当前虚拟环境里所有已安装的包和版本号都记录下来。在新机器上:

pip install -r requirements.txt

一键恢复所有依赖。这里有个坑——pip freeze 会把无关的依赖也列进去。我一般会手动编辑 requirements.txt,只保留真正需要的几个包,然后写上大概率兼容的版本范围:

boto3>=1.28, <2.0
cryptography>=39.0, <42.0

专业做法:用 pip-compile(来自 pip-tools)生成更干净的依赖列表。不过咱们入门阶段,手工维护几条就够了。

4.5 配置 AWS 凭据

boto3 需要知道你用的是哪个 AWS 账户的 Access Key。配置方式有三种:

  1. 环境变量:AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY。
  2. 配置文件:~/.aws/credentials。
  3. IAM Role(仅限 EC2 等云上环境)。

本地开发我推荐用第 2 种:

aws configure
# 依次输入 Access Key ID、Secret Access Key、默认区域(如 ap-northeast-1)、输出格式(json)

命令会生成两个文件:

  • ~/.aws/credentials:存放密钥对。
  • ~/.aws/config:存放区域和格式。

注意,千万不要把 credentials 文件提交到 Git 里。我习惯在 .gitignore 中加上 .aws/。

安全提醒:密钥相当于你的账户密码。我曾经在演示时不小心用 cat 打印过密钥(全场大屏共享),那种尴尬……你别学我。生产环境务必使用 IAM Role 或 AWS Secrets Manager。

4.6 整体环境搭建流程图

下面这张图总结了从零到可执行加密上传操作的关键步骤:

环境搭建核心流程 安装 Python 3.8+ 创建虚拟环境 安装 boto3 + crypto 配置 AWS 凭据 验证可用性 进入开发 💡 关键检查点 • Python 版本 ≥ 3.8 • 虚拟环境已激活 • boto3 版本最新 • 凭据可读、无空格

到这步,你的开发环境已经齐活。后面章节咱们就开始写真正的加密上传下载代码了——你会看到刚才装的每一个库是怎么配合工作的。