为何docker run创建的pyATS容器通过exec进入后已安装包消失?
问题原因说明
这个现象的核心原因是你两次执行pip list时所处的Python环境不是同一个,包并没有真正消失:
- 你通过
docker run -it进入容器时,ciscotestautomation/pyats镜像自带的入口脚本(Entrypoint)会自动执行工作区初始化逻辑,激活pyats专属的Python虚拟环境,此时你执行pip list查询的是这个虚拟环境内的安装包,因此能看到所有预装的pyats相关依赖。 - 你后续通过
docker exec进入容器时,不会触发镜像的入口脚本逻辑,默认进入的是容器的系统全局Python环境,这个环境默认仅安装了pip、setuptools、wheel三个基础包,因此会出现「包全部消失」的错觉。
验证方法
你docker exec进入容器后,手动执行虚拟环境激活命令即可看到完整的安装包列表:
# 执行镜像入口脚本对应的虚拟环境激活命令 source /pyats/venv/bin/activate # 再次查询包列表 pip list
如果上述路径不匹配,也可以参考你docker run时输出的[Entrypoint] Activating workspace日志对应的激活逻辑操作即可。
内容的提问来源于stack exchange,提问作者Michlol 502
相关产品推荐
相关产品推荐

