4. Python 环境与库准备:把工具箱收拾利索
做数据遮蔽,说白了就是跟敏感数据打交道。你想想看,要是连 Python 环境都没搭好,后面那些遮蔽逻辑跑起来肯定到处报错。我个人习惯是,每做一个新项目,都先花十分钟把环境理清楚。这十分钟,能省下后面好几个小时的排坑时间。
这一章,我们就来把 Python 版本、虚拟环境、还有几个核心库全部搞定。嗯,这里要注意,别图省事直接在全局环境里装一堆包,后面有你哭的时候。
4.1 Python 版本选择:别追新,要追稳
Python 版本这事儿,我踩过坑。有一年我图新鲜,上了 Python 3.11 的 beta 版,结果有个加密库死活装不上,折腾了两天。后来学乖了,生产环境老老实实用稳定版。
对于列遮蔽这个场景,我建议你选 Python 3.9 到 3.11 之间的版本。为什么?
- Python 3.8:太老了,有些新库已经开始放弃支持。
- Python 3.9:非常稳,我目前在用的主力版本,pandas、cryptography 都跑得很顺。
- Python 3.10:也不错,语法上多了 match-case,但遮蔽场景用不上。
- Python 3.11:性能有提升,但部分第三方库的 wheel 包还没全覆盖。
- Python 3.12+:先别碰,等生态跟上了再说。
4.2 虚拟环境搭建:隔离是美德
为什么要用虚拟环境?我遇到过最惨的一次,是同时做两个项目,一个依赖 pandas 1.3,另一个依赖 pandas 2.0。结果全局装来装去,两个项目都跑不起来。从那以后,我每个项目都老老实实建虚拟环境。
Python 官方推荐的虚拟环境工具是 venv,从 3.3 开始就内置了,不用额外装。操作很简单:
# 创建虚拟环境(在项目根目录下执行)
python -m venv venv
# 激活虚拟环境
# Windows 下:
venv\Scripts\activate
# macOS / Linux 下:
source venv/bin/activate
# 激活后,命令行前面会出现 (venv) 字样
# 退出虚拟环境用:
deactivate
我个人习惯把虚拟环境文件夹命名为 venv,放在项目根目录。然后在 .gitignore 里把它加进去,免得提交到代码仓库里。
Set-ExecutionPolicy Unrestricted -Scope CurrentUser,或者直接用 cmd 来激活。
4.3 核心库安装:一个一个来
虚拟环境激活之后,就可以开始装库了。列遮蔽要用到四个库:pandas、numpy、faker、cryptography。我建议你按顺序装,别一次性全装,万一哪个报错好排查。
4.3.1 pandas:数据处理的主力
pandas 是列遮蔽的核心工具。读数据、写数据、做遮蔽变换,全得靠它。安装命令很简单:
pip install pandas
装完之后,可以验证一下版本:
python -c "import pandas; print(pandas.__version__)"
我目前用的是 2.0.3,跑遮蔽逻辑很稳。如果你看到输出类似 2.0.3 或 1.5.3,就说明装好了。
4.3.2 numpy:数值计算的底座
numpy 是 pandas 的底层依赖,虽然你不一定直接用它,但 pandas 背后全靠它。装 pandas 的时候,如果环境干净,pip 会自动把 numpy 一起拉下来。但保险起见,我习惯单独装一遍:
pip install numpy
pip install --only-binary=:all: numpy。苹果芯片建议用 pip install numpy --no-cache-dir。
4.3.3 faker:造数据的利器
faker 这个库,说白了就是用来生成假数据的。做列遮蔽的时候,经常需要模拟真实数据来测试遮蔽效果。比如生成假的姓名、身份证号、邮箱地址。安装:
pip install faker
装完之后,你可以快速试一下:
python -c "from faker import Faker; fake = Faker('zh_CN'); print(fake.name())"
如果输出一个中文名字,比如"张三",那就说明装好了。我个人喜欢用 zh_CN 区域,生成的数据更贴近国内场景。
4.3.4 cryptography:加密的看家本领
这个库是列遮蔽里最关键的。它提供了对称加密、哈希、密钥派生等功能。我们后面做遮蔽的时候,会用它来加密敏感字段。安装:
pip install cryptography
验证安装:
python -c "from cryptography.fernet import Fernet; print('OK')"
如果输出 OK,就说明 cryptography 可以正常使用了。我记得有一次装这个库,在旧版 macOS 上遇到了 OpenSSL 链接问题,后来升级了 pip 和 setuptools 就好了:
pip install --upgrade pip setuptools
pip install cryptography
4.4 依赖管理:把环境锁住
环境搭好之后,我强烈建议你把当前环境的依赖导出来,方便以后复现:
pip freeze > requirements.txt
这样生成的 requirements.txt 文件里,会记录所有库的精确版本号。以后换机器或者给别人用,直接 pip install -r requirements.txt 就能还原一模一样的环境。
下面是我这个项目用到的核心依赖版本,供你参考:
| 库名 | 推荐版本 | 作用 |
|---|---|---|
| pandas | ≥2.0.0 | 数据读取、处理、遮蔽变换 |
| numpy | ≥1.24.0 | 数值计算底层支持 |
| faker | ≥18.0.0 | 生成模拟假数据 |
| cryptography | ≥41.0.0 | 加密、哈希、密钥管理 |
4.5 环境准备全景图
说了这么多,我把整个环境准备的流程画成了一张图。你照着这个流程走,基本不会出问题。
核心要点回顾:
- Python 版本选 3.9-3.11,别追新。
- 每个项目单独建虚拟环境,用
venv就行。 - 四个库按顺序装:pandas → numpy → faker → cryptography。
- 装完立刻
pip freeze锁住版本。
环境准备好了,后面我们就可以正式开始写遮蔽代码了。嗯,这一步虽然看起来琐碎,但基础打牢了,后面跑起来才顺畅。我当年要是早点养成这个习惯,也不至于在环境问题上浪费那么多时间。