在Windows上升级anaconda
anaconda升级,以及遇到的问题
·
操作系统:Win10
我本地有多个虚拟环境,担心升级过程中出现问题,因此先备份已有的虚拟环境。(下面第2步执行后确实可以导出yml文件,点开以后,里面也有环境中的包,但是我删除原来的虚拟环境,执行第6步中的代码测试,新恢复的虚拟环境会缺少很多pip安装的包,最后还是执行pip install -r requirments.txt才完全恢复。)
1、conda env list > env_list.txt
2、把虚拟环境挨个导出
import subprocess
with open("env_list.txt") as f:
envs = [line.split()[0] for line in f if "envs" in line]
for env in envs:
if env == "base":
continue # 跳过base环境
subprocess.run(["conda", "env", "export", "-n", env, "-f", f"{env}.yml"])
3、使用管理员身份启动命令提示符窗口,进入到base环境(我的电脑打开命令提示符默认不是在base环境,需要通过命令手动进入)
4、升级conda
conda update conda
5、升级anaconda
conda update anaconda
6、正常来说虚拟环境不会受影响,如果有受到影响的,可以通过以下代码恢复对应的虚拟环境
import subprocess
import os
def restore_envs():
# 获取当前目录下所有.yml文件
env_files = [f for f in os.listdir() if f.endswith(".yml")]
for env_file in env_files:
# 提取环境名(如my_env.yml → my_env)
env_name = os.path.splitext(env_file)[0]
# 执行恢复命令,--force参数强制覆盖旧环境
cmd = f"conda env create -f {env_file} --name {env_name} --force"
print(f"正在恢复环境: {env_name}")
# 执行命令并捕获输出
result = subprocess.run(
cmd,
shell=True,
capture_output=True,
text=True
)
# 输出日志
print(result.stdout)
if result.stderr:
print(f"警告: {result.stderr}")
continue
# 恢复后验证
print(f"验证环境 {env_name}:")
try:
subprocess.run(
f"conda activate {env_name} && python -c 'import sys; print(sys.version)'",
shell=True,
check=True,
capture_output=True
)
except subprocess.CalledProcessError as e:
print(f"环境 {env_name} 验证失败: {e.stderr}")
if __name__ == "__main__":
restore_envs()
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)