Ubuntu升级后损坏的Python虚拟环境,如何获取已安装包列表
从损坏虚拟环境的site-packages提取已安装包列表
当虚拟环境因系统升级损坏、pip不可用,但site-packages目录完好时,可以通过以下方法提取已安装包信息:
方法1:自动提取包名(快速生成基础依赖列表)
进入site-packages目录,用Python脚本扫描.dist-info和.egg-info目录来获取包名:
cd venv/lib/python3.8/site-packages/ python3.8 -c " import os import re pkgs = set() for item in os.listdir('./'): m = re.match(r'^([a-zA-Z0-9_\-]+)(?:-\d+\.\d+.*)?\.(dist-info|egg-info)$', item) if m: pkgs.add(m.group(1)) print('\n'.join(sorted(pkgs))) " > requirements.txt
运行后会生成requirements.txt,包含所有已安装包的名称(无版本号,pip会默认安装最新版)。
方法2:提取带版本号的依赖(精准还原原环境)
如果需要和原环境一致的版本,用命令直接提取带版本的包名:
ls -1 venv/lib/python3.8/site-packages/*.dist-info | sed 's/\.dist-info//' | sort | uniq > requirements.txt
输出格式类似Django-4.2.5,可以手动把-替换为==,改成Django==4.2.5的格式,确保安装指定版本。
也可以单独查看某个包的版本信息:
cat venv/lib/python3.8/site-packages/Django-*.dist-info/METADATA | grep -E '^Version:'
重建虚拟环境步骤
- 删除损坏的虚拟环境:
rm -rf venv
- 重新创建Python3.8虚拟环境:
python3.8 -m venv venv
- 激活虚拟环境:
source venv/bin/activate
- 安装依赖包:
pip install -r requirements.txt
内容的提问来源于stack exchange,提问作者minttux
相关产品推荐
相关产品推荐

