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。配置方式有三种:
- 环境变量:
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY。 - 配置文件:
~/.aws/credentials。 - 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 整体环境搭建流程图
下面这张图总结了从零到可执行加密上传操作的关键步骤:
到这步,你的开发环境已经齐活。后面章节咱们就开始写真正的加密上传下载代码了——你会看到刚才装的每一个库是怎么配合工作的。