comfyUI deprecate(“AutoencoderTinyBlock“, “0.29“, deprecation_message)

ComfyUI 出现如下提示: 

/mnt/data/aigc/ComfyUI/comfyui_venv/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:249: FutureWarning: `AutoencoderTinyBlock` is deprecated and will be removed in version 0.29. Importing `AutoencoderTinyBlock` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import AutoencoderTinyBlock`, instead.
  deprecate("AutoencoderTinyBlock", "0.29", deprecation_message)
[2024-05-05 03:03] /mnt/data/aigc/ComfyUI/comfyui_venv/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:254: FutureWarning: `UNetMidBlock2D` is deprecated and will be removed in version 0.29. Importing `UNetMidBlock2D` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import UNetMidBlock2D`, instead.
  deprecate("UNetMidBlock2D", "0.29", deprecation_message)
[2024-05-05 03:03] /mnt/data/aigc/ComfyUI/comfyui_venv/lib/python3.10/site-packages/diffusers/models/unet_2d_blocks.py:259: FutureWarning: `UNetMidBlock2DCrossAttn` is deprecated and will be removed in version 0.29. Importing `UNetMidBlock2DCrossAttn` from `diffusers.models.unet_2d_blocks` is deprecated and this will be removed in a future version. Please use `from diffusers.models.unets.unet_2d_blocks import UNetMidBlock2DCrossAttn`, instead.
  deprecate("UNetMidBlock2DCrossAttn", "0.29", deprecation_message)

改问题为采用最新版本的diffusers引发的版本兼容问题,解决方案如下:

./custom_nodes/ComfyUI-layerdiffuse/lib_layerdiffusion/models.py文件中大约第10行

原码:

from diffusers.models.unet_2d_blocks import UNetMidBlock2D, get_down_block, get_up_block

修改为:

from diffusers.models.unets.unet_2d_blocks import UNetMidBlock2D, get_down_block, get_up_block
 

lib/python3.10/site-packages/modelscope/models/multi_modal/efficient_diffusion_tuning/control_sd_lora.py文件大约18行

原码:

from diffusers.models.unet_2d_blocks import \
    get_down_block as get_down_block_default
修改为:

from diffusers.models.unets.unet_2d_blocks import \
    get_down_block as get_down_block_default
 

<think>好的,我现在需要解决用户在导入'_deprecate_positional_args'时遇到的问题。用户提到使用了TensorFlow的升级工具tf_upgrade_v2.py,但可能升级后的代码仍然存在兼容性问题。首先,我得回想一下这个错误通常出现在什么情况下。 首先,'_deprecate_positional_args'这个模块可能属于较旧版本的库,比如scikit-learn。可能在升级TensorFlow的过程中,某些依赖库的版本没有同步更新,导致导入错误。例如,如果用户升级了TensorFlow到2.x版本,但scikit-learn的版本较旧,可能会出现这种问题。 接下来,我需要考虑可能的解决方案。第一步是检查scikit-learn的版本。因为从某个版本开始,scikit-learn可能移除了这个模块。用户需要升级scikit-learn到最新版本,比如1.0以上,因为根据文档,1.0版本之后这个模块可能被弃用了[^1]。 如果升级后问题依旧,可能需要检查代码中是否有直接引用这个私有函数的地方。通常,用户不应该直接使用以下划线开头的内部模块或函数,因为这些是库内部使用的,可能会在版本更新中被修改或删除。用户应该查看自己的代码或第三方库的代码,找到对'_deprecate_positional_args'的引用,并将其替换为公共API的等效方法。 另外,可能用户的环境中有多个版本的库冲突,导致即使升级了scikit-learn,旧版本仍然被引用。这时候需要确认虚拟环境是否正确,或者是否存在残留的旧版安装文件。使用虚拟环境如venv或conda可以帮助隔离依赖,避免版本冲突。 最后,如果用户无法立即升级scikit-learn,可以考虑临时解决方案,比如回退到兼容的旧版本。但这只是权宜之计,长期还是需要更新代码以适应新版本的库。 总结起来,解决步骤应该是:升级scikit-learn到最新版,检查代码中的私有引用,处理依赖冲突,必要时重构代码使用公共API。同时,确保TensorFlow升级后的兼容性,可能需要检查其他依赖库的版本是否匹配。</think>针对导入`_deprecate_positional_args`时的错误,以下是逐步解决方案: --- ### **问题原因** 该错误通常由以下原因引起: 1. **scikit-learn版本过旧**:`_deprecate_positional_args`是scikit-learn的内部工具函数,在较新版本(如1.0+)中被移除。 2. **代码直接引用了私有模块**:用户代码或第三方库直接调用了scikit-learn的内部函数(以下划线开头的函数为私有函数)。 --- ### **解决方案** #### 第一步:升级scikit-learn 执行以下命令升级到最新稳定版: ```bash pip install --upgrade scikit-learn # 或使用conda conda update scikit-learn ``` 升级后验证版本: ```python import sklearn print(sklearn.__version__) # 应 >= 1.0 ``` #### 第二步:检查代码依赖 1. **检查自定义代码**:搜索代码中是否直接引用`_deprecate_positional_args`,例如: ```python from sklearn.utils.validation import _deprecate_positional_args # 错误写法 ``` 需替换为公共API(如使用`@deprecated`装饰器或删除过时代码逻辑)。 2. **检查第三方库兼容性**: - 如果错误来自第三方库(如旧版TensorFlow或Keras依赖),尝试升级相关库: ```bash pip install --upgrade tensorflow keras ``` - 若问题仍存在,检查该库的GitHub Issues或文档,确认是否需调整导入方式。 #### 第三步:处理版本冲突 如果无法立即升级scikit-learn,可临时回退到兼容版本: ```bash pip install scikit-learn==0.24.2 # 最后一个包含该函数的版本 ``` 但长期仍需迁移到新版API。 --- ### **示例代码修正** 假设原代码为: ```python from sklearn.utils.validation import _deprecate_positional_args @_deprecate_positional_args def train_model(param1, param2): pass ``` 修正后应删除装饰器或改用其他参数校验方式: ```python def train_model(param1, param2): pass # 直接使用标准参数传递 ``` ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值