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+:先别碰,等生态跟上了再说。
我的小建议: 直接装 Python 3.10.11,这是 3.10 系列的最后一个维护版本,bug 修得最干净。你可以在 python.org 的 Downloads 页面找到所有历史版本。

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 里把它加进去,免得提交到代码仓库里。

避坑指南: 我曾经在 Windows 上遇到过 PowerShell 执行策略阻止激活脚本的情况。解决办法是用管理员权限运行 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
一个小细节: 如果你在装 numpy 时遇到编译错误(尤其是 macOS 的 M1/M2 芯片),可以试试装预编译的 wheel 包: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 环境准备流程 Python 环境准备全景图 选择 Python 3.9-3.11 创建 venv 虚拟环境 安装 pandas + numpy + faker + cryptography 验证各库版本 pip freeze > requirements.txt 💡 为什么要用虚拟环境? 避免不同项目间的 依赖版本冲突 ⚠️ 常见坑点 macOS M1/M2 装 numpy 可能需 --no-cache-dir

核心要点回顾:

  • Python 版本选 3.9-3.11,别追新。
  • 每个项目单独建虚拟环境,用 venv 就行。
  • 四个库按顺序装:pandas → numpy → faker → cryptography。
  • 装完立刻 pip freeze 锁住版本。

环境准备好了,后面我们就可以正式开始写遮蔽代码了。嗯,这一步虽然看起来琐碎,但基础打牢了,后面跑起来才顺畅。我当年要是早点养成这个习惯,也不至于在环境问题上浪费那么多时间。