虽然最好的复现方式是再新创建一个虚拟环境然后完全安装对应版本,但是当我要跑好几个类似的代码的时候,就不想每个都创建一个虚拟环境了,直接用原来的,然后添加一些包依赖。
所以我们就大概的步骤就是找到对应的包,检查是否安装过,如果没有则进行安装。
import yaml
with open("ControlNet/environment.yaml", "r") as stream:
data = yaml.safe_load(stream)
pip_dependencies = data["dependencies"][-1]["pip"] # 找到对应的pip依赖包
print(pip_dependencies)
def split_by_equal(s): # 为了与原始的环境兼容,去掉其固定的版本
return s.split('==')[0]
lst = [split_by_equal(x) for x in pip_dependencies]
import importlib # 使用这个库来动态导入
for pip_dependency in lst:
try:
my_module = importlib.import_module(pip_dependency) # 尝试直接import这个包
except ImportError: # 报错了就说明没有这个包
from pip._internal import main as pip
pip(['install', '--user', pip_dependency]) # 进行安装
my_module = importlib.import_module(pip_dependency) # 再次验证
文章讲述了在不创建新虚拟环境的情况下,如何检查并安装Python项目所需的包依赖。通过读取`environment.yaml`文件获取pip依赖列表,然后使用`importlib`尝试导入模块,如果失败则通过pip安装,确保所有依赖都已就绪。
7706

被折叠的 条评论
为什么被折叠?



