必须先向运维/安全部门申请Python解释器白名单及本地pip源策略例外,提交指定版本安装包的SHA256哈希与用途说明,禁用所有远程网络行为,采用离线wheel包+hash锁定方式安装。

确认内网机房是否允许安装 Python 运行时
银行内网机房通常禁用非白名单程序,python.exe 或 pip 二进制文件可能被终端管控软件(如奇安信天擎、深信服EDR)直接拦截。必须先向运维/安全部门申请「Python 解释器白名单」和「本地 pip 源策略例外」——不是申请“允许装 Python”,而是明确提交:python-3.11.9-embed-amd64.zip(Windows)或 Python-3.11.9.tgz(Linux)的 SHA256 哈希值与用途说明。
常见错误现象:
– 双击 python.exe 无反应,任务管理器里看不到进程 → 实为 EDR 静默拦截
– 运行 pip install requests 卡在 “Collecting packages” → DNS 被策略禁止,不是网络慢
- 优先选用
embed版本(Windows)或--enable-optimizations编译的静态链接版(Linux),避免依赖系统 DLL 或 libc 版本冲突 - 不推荐用 pyenv 或 conda:它们需联网下载构建脚本、触发额外网络行为,且 conda 的
conda install默认走 HTTPS,即使离线也会尝试连repo.anaconda.com - 若只允许运行已签名程序,可要求提供由银行 CA 签名的 Python 安装包(部分国有大行已有内部 Python 镜像站 + 签名机制)
用 offline-pip 打包并验证第三方库依赖树
在有外网的开发机上,不能简单 pip download 就完事。银行项目常含 C 扩展(如 pyyaml、cryptography),其 wheel 文件平台标签(cp311-cp311-win_amd64)必须与目标机完全一致,否则安装时报 ERROR: xxx.whl is not a supported wheel on this platform。
实操建议:
立即学习“Python免费学习笔记(深入)”;
- 在目标环境同型号物理机(或相同 OS 版本 + CPU 架构的虚拟机)上,用
python -m pip debug --verbose记下platform_tag和abi_tag,作为 download 命令的--platform参数依据 - 用
pip download --no-deps --platform win_amd64 --python-version 311 --only-binary=all -d ./wheels requests先下载主包,再用pip download --find-links ./wheels --no-index --no-deps -d ./wheels补全依赖,避免漏掉charset-normalizer-3.3.2-py3-none-any.whl这类纯 Python 包 - 把整个
wheels/目录拷进内网后,务必执行pip install --find-links ./wheels --no-index --upgrade --force-reinstall requests验证能否闭环安装,而非只检查文件是否存在
替换默认 pip 源为本地 file:// 路径并禁用所有远程行为
内网中只要 pip 配置残留 https://pypi.org/simple,哪怕只输 pip list,新版 pip(≥22.0)也会默认发起 HEAD 请求探测源可用性,触发安全审计告警。必须彻底切断网络探针。
操作要点:
- 不要改
%APPDATA%\pip\pip.ini(Windows)或$HOME/.pip/pip.conf(Linux),因内网机通常无用户家目录写权限;改用项目级配置:pip config set global.index-url "file:///D:/offline_pypi/simple" -
file://路径必须是绝对路径,且目录结构需符合 PEP 503:即D:\offline_pypi\simple\requests\下放index.html(列出该包所有 wheel)和 wheel 文件本身 - 运行
pip install --trusted-host pypi.org --index-url "file:///D:/offline_pypi/simple" requests时,--trusted-host实际无效(file 协议不走 TLS),但加上可避免某些定制版 pip 报错;真正起作用的是--index-url和--find-links - 检查是否干净:
pip config debug应显示global.index-url='file:///D:/offline_pypi/simple',且pip config list不输出任何https相关字段
用 venv + requirements.freeze 维持环境可重现性
银行审计要求“任意时刻可重建完全一致环境”,仅靠手动 pip install 不满足合规。必须用 venv 隔离 + 锁定 hash。
关键动作:
- 在内网机上创建环境:
python -m venv D:\proj\venv,然后激活:D:\proj\venv\Scripts\activate.bat(Win)或source D:/proj/venv/bin/activate(Linux) - 安装时强制校验 hash:
pip install --find-links file:///D:/offline_pypi/wheels --no-index --require-hashes -r requirements.txt,其中requirements.txt必须含每行pkg==1.2.3 --hash=sha256:abc... - 生成锁文件不能用
pip freeze(它会混入系统包如pip、setuptools);而要用pip install --dry-run --report -输出 JSON,再用脚本提取业务包及其 hash —— 或更稳妥地,在外网机用pip-compile --generate-hashes requirements.in(via pip-tools)预生成
最容易被忽略的一点:银行内网机常禁用计划任务与临时目录写入,venv 的 Scripts\pip 若被策略识别为“可疑脚本”,可能无法执行。此时应改用 python -m pip 全路径调用,并将 venv 放在白名单路径(如 D:\bankapp\)下,而非默认的用户目录。


















