MCPcopy Create free account
hub / github.com/aaPanel/BaoTa / multi_remove_env

Method multi_remove_env

mod/project/python/pyenv_tool.py:1193–1293  ·  view source on GitHub ↗

批量移除Python虚拟环境(从管理列表中移除) :param path: 要移除的Python环境路径 :param more_path: 其他要移除的路径(可变参数) :return: 错误信息或None(成功) 可以移除的条件, 1.是python_manager/pyporject_evn下的环境, 2.非conda环境, 3.无项目使用中, 4.system环境,需要无以此环境为home的vnev环境

(self, *more_path: str)

Source from the content-addressed store, hash-verified

1191 return None
1192
1193 def multi_remove_env(self, *more_path: str) -> List[Dict]:
1194 """批量移除Python虚拟环境(从管理列表中移除)
1195
1196 :param path: 要移除的Python环境路径
1197 :param more_path: 其他要移除的路径(可变参数)
1198 :return: 错误信息或None(成功)
1199 可以移除的条件,
1200 1.是python_manager/pyporject_evn下的环境,
1201 2.非conda环境,
1202 3.无项目使用中,
1203 4.system环境,需要无以此环境为home的vnev环境
1204 """
1205 # 合并所有待删除路径并进行标准化处理
1206 paths_to_remove = {os.path.normpath(p) for p in more_path}
1207
1208 to_remove = []
1209 saved = []
1210
1211 for p in self.all_env:
1212 if p.bin_path in paths_to_remove:
1213 to_remove.append(p)
1214 paths_to_remove.remove(p.bin_path)
1215 else:
1216 saved.append(p)
1217
1218 if paths_to_remove:
1219 msg = "Python环境不存在:%s"
1220 return [{"path": p, "status": False, "msg": msg % p} for p in paths_to_remove]
1221
1222 bin_path2project = self.all_python_project_map()
1223 # 优先处理顺序 有项目使用的、conda、venv、system(非系统)、系统环境
1224 to_remove.sort(key=lambda x: (
1225 x.bin_path not in bin_path2project,
1226 ("conda", "venv", "system").index(x.env_type),
1227 any(x.bin_path.startswith(syp) for syp in _SYS_BIN_PATH)
1228 ))
1229
1230 res_map = {p.bin_path: {
1231 "path": p.bin_path, "status": True, "msg": "Python环境删除成功"
1232 } for p in to_remove}
1233
1234 real_remove = []
1235 for p in to_remove:
1236 if p.env_type == "conda":
1237 res_map[p.bin_path].update(
1238 status=False,
1239 msg="Conda环境不支持操作,请在命令行中执行conda remove -n {}".format(p.venv_name)
1240 )
1241 saved.append(p)
1242 continue
1243 elif p.bin_path in bin_path2project:
1244 res_map[p.bin_path].update(
1245 status=False,
1246 msg="Python环境正在被项目【{}】使用,请先删除项目再操作".format(bin_path2project[p.bin_path][0])
1247 )
1248 saved.append(p)
1249 continue
1250 elif not p.bin_path.startswith(python_manager_path()) and \

Callers 3

remove_environmentMethod · 0.95
RemoveProjectMethod · 0.95
RemovePythonVMethod · 0.80

Calls 14

load_reportMethod · 0.95
python_manager_pathFunction · 0.85
pyenv_pathFunction · 0.85
indexMethod · 0.80
timeMethod · 0.80
writeFileMethod · 0.80
appendMethod · 0.45
removeMethod · 0.45
sortMethod · 0.45
updateMethod · 0.45
formatMethod · 0.45

Tested by

no test coverage detected