NAS 上跑 Python 脚本先建虚拟环境:五步落位,依赖不进全局
场景:脚本一多,全局环境先乱
NAS 上跑 Python 脚本是自动化运维的常见打法:定时备份脚本、数据搬运工具、巡检程序都离不开第三方包。麻烦在于直接用 pip 装包,包会落进系统全局的 Python 里——脚本 A 要旧版本库、脚本 B 要新版本库,全局环境先打架,运气差时连系统侧的依赖都被带歪。虚拟环境(venv)就是解这个结的:每套脚本一个独立环境,包各装各的,全局一点不碰。
前提两件
- 机器上装好 Python3 或以上版本的套件;
- 在电脑上用 SSH 以 root 权限登录 NAS。
先认版本:一条命令看清家底
进来先执行:
compgen -c python
列出来的名字各有含义:python 是系统内置版本,动不得;python2 是旧套件,不支持 venv;python3 与 python3.9 是套件版本,受 venv 支持又不干扰系统操作,官方建议就用这两个。后续命令里的 python3 想换成 python3.9,直接替换即可。
五步建环境
选定放环境的存储空间,一条条来:
cd /volume1
python3 -m venv dateutil_env
cd dateutil_env/
source bin/activate
cd /volume1:选存储空间,哪个卷宽敞用哪个;python3 -m venv dateutil_env:创建虚拟环境,目录名随脚本用途起;cd dateutil_env/:进入环境目录;source bin/activate:激活——从这一刻起,pip 等安装工具自动把包装进虚拟环境,不再碰全局。
激活之后提示符会变样,装包、跑脚本都在环境内完成。环境用完退出、下次要用再激活,目录里一切如初。
小结
虚拟环境的逻辑一句话:给每套脚本一个自带的包仓库,互不打扰、不碰系统。五步命令里真正要动脑的只有选版本与起目录名,其余是肌肉记忆。
诚鑫致达科技为部署过的每套脚本留一份依赖底册,Python 版本与依赖包都锁在各自的虚拟环境里——机器重灌时照底册逐条复原,不靠谁的记性。