deepfacelab中文网

 找回密码
 立即注册(仅限QQ邮箱)
查看: 136|回复: 6

微软你在干屌,偷偷给我更新,完事 pytorch报错

[复制链接]

6

主题

59

帖子

706

积分

高级丹师

Rank: 5Rank: 5

积分
706
 楼主| 发表于 昨天 22:49 | 显示全部楼层 |阅读模式
星级打分
  • 1
  • 2
  • 3
  • 4
  • 5
平均分:NAN  参与人数:0  我的评分:未评
本帖最后由 ulu 于 2026-7-16 13:22 编辑

Traceback (most recent call last):
  File "F:\dfl\z09-Tools\dfl_train_compat.py", line 69, in <module>
    main()
  File "F:\dfl\z09-Tools\dfl_train_compat.py", line 56, in main
    _patch_code_discriminator()
  File "F:\dfl\z09-Tools\dfl_train_compat.py", line 12, in patch_code_discriminator
    from core.leras.models.DiscriminatorsTorch import CodeDiscriminatorTorch
  File "<frozen core.leras>", line 3, in <module>
  File "<frozen DeepFaceLab.core.leras>", line 11, in <module>
  File "F:\dfl_INTER~1\DEEPFA~1\core\leras\nn.py", line 17, in <module nn>
  File "F:\dfl_internal\Py310-CUDA\lib\site-packages\torch_init.py", line 280, in <module>
    load_dll_libraries()
  File "F:\dfl_internal\Py310-CUDA\lib\site-packages\torch_init.py", line 263, in _load_dll_libraries
    raise err
OSError: [WinError 1114] 动态链接库(DLL)初始化例程失败。 Error loading "F:\dfl_internal\Py310-CUDA\lib\site-packages\torch\lib\c10.dll" or one of its dependencies.
Press any key to continue . . .

训练干一半,给我重启更新了,更新完就启动不了。还好有 codex,查了 20 分钟,结果是微软 VC++的运行库问题

问题分析和解决:
C:\Windows\System32\MSVCP140.dll
C:\Windows\System32\VCRUNTIME140.dll
C:\Windows\System32\VCRUNTIME140_1.dll
这些 DLL 由 Microsoft Visual C++ Redistributable 安装,供 Torch、ONNX Runtime、浏览器、显卡工具等大量 C++ 程序共同使用。System32 是 64 位版本,SysWOW64 是 32 位版本。
Windows 更新为什么会碰到同名文件?因为 WebView、.NET、Windows App Runtime 等系统组件也是用 C++ 编译的,更新包内也包含名为 MSVCP140.dll、VCRUNTIME140.dll 的依赖副本。CBS 日志显示更新确实在处理这些文件,但处理的是 WinSxS/WebView 组件目录中的副本。
正常情况下:
Windows/WebView 私有副本 → WinSxS 或组件目录
VC++ 全局运行库       → System32 / SysWOW64
两者虽然同名,但不应该互相覆盖。所以严格来说,Windows 更新并不“需要”把 System32 中的 VC++ 运行库降级。我们遇到的是异常状态:更新/重启、挂起的文件替换或某个安装器使全局 DLL 只替换了一部分。
最关键的证据是:
注册表认为 VC++ 已经是 14.44
_1.dll 也是 14.44
另外两个 DLL 却是 14.00
这说明不是一次正常、完整的升级或降级,而是文件替换没有保持一致。它们也不是 DFL 自带文件;DFL 只是加载这些系统共享组件时首先暴露了问题。
因此更准确的说法是:Windows 更新与问题发生时间高度相关,并且更新确实处理过同名组件,但日志尚不能证明它直接把错误文件复制到了 System32。也可能是重启顺带提交了此前挂起的 VC++ 文件替换。现在通过 VC++ Repair,已经把全局三件套重新统一到 14.44。


分享出来给近期更新过的避坑,
怕遇到未知报错的一定要把自动更新给关了,兄弟们。
很难保证以后的更新会不会整其他幺蛾子出来




截屏2026-07-15 22.40.31.png
回复

使用道具 举报

33

主题

224

帖子

1700

积分

初级丹圣

Rank: 8Rank: 8

积分
1700
发表于 10 小时前 | 显示全部楼层
本帖最后由 day270010678 于 2026-7-16 12:59 编辑

楼主是对的,我装了下pytorch测试了,这次更新后确实导致vc++和python的版本不一致,dll加载时依赖新版VC++运行时,但Python目录的旧版DLL被优先加载,导致版本不匹配初始化失败,最简单的就是更新python的dll,直接复制系统的到python覆盖就行了,如果python版本低的话,复制可能出问题,torch出错主要是python的搜索dll变成嵌入式python搜索,所以搜索不到torch的dll,必须用os.add_dll_directory(),所以不复制dll的方法只能是在import之前自动调用

  1. os.environ.setdefault("ORT_LOGGING_LEVEL", "3")

  2. _dll_dirs = os.environ.get("DFL_DLL_DIRS", "")
  3. if _dll_dirs:
  4.     for d in _dll_dirs.split(os.pathsep):
  5.         d = d.strip()
  6.         if d and os.path.isdir(d):
  7.             os.add_dll_directory(d)

  8. _root = os.path.dirname(os.path.abspath(__file__))
  9. _parent = os.path.dirname(_root)
  10. if _parent not in sys.path:
  11.     sys.path.insert(0, _parent)

  12. from DeepFaceLab.main import main
复制代码


楼主这个解释帮了很多人大忙
回复 支持 2 反对 0

使用道具 举报

16

主题

3731

帖子

2万

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
21237

真我风采勋章万事如意节日勋章

发表于 13 小时前 | 显示全部楼层
本帖最后由 wtxx8888 于 2026-7-16 13:14 编辑
day270010678 发表于 2026-7-16 01:21
不是我猜,而是我说的也是事实,真要验证究竟是谁对谁错,需要楼主再次降级把版本弄不一致,再来测试下, ...

我是提醒你,仔细看  楼主的文字。
楼主发贴的意思,就是人家 解决了报错,确认了 是什么造成的,发的是  怎么解决的途径。
楼主文字里  有明确的  解决 2字。。。楼主  不是  来求助的!
微信图片_2026-07-16_110155_221.png
回复 支持 1 反对 0

使用道具 举报

6

主题

59

帖子

706

积分

高级丹师

Rank: 5Rank: 5

积分
706
 楼主| 发表于 15 小时前 | 显示全部楼层
本帖最后由 ulu 于 2026-7-16 09:36 编辑

day270010678 发表于 2026-7-15 23:38
你肯定搞错了。出现这样的情况,肯定是不是微软更新导致的,微软在更新也不会更新你pytorch里面的dll,这是 ...


当时单独跑 torch,也会报这个错。开机启动的话我没什么相关的软件啊。只能怀疑是更新了。如果是重启的问题的话,我以前重启也没遇到过这个报错
截屏2026-07-16 08.20.04.png

回复 支持 1 反对 0

使用道具 举报

16

主题

3731

帖子

2万

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
21237

真我风采勋章万事如意节日勋章

发表于 22 小时前 | 显示全部楼层
day270010678 发表于 2026-7-15 23:38
你肯定搞错了。出现这样的情况,肯定是不是微软更新导致的,微软在更新也不会更新你pytorch里面的dll,这是 ...

仔细看 楼主的文字。
人家 是报错后,就这么解决的!你还来个 我猜
看文字,能否仔细点呢???
回复 支持 1 反对 0

使用道具 举报

33

主题

224

帖子

1700

积分

初级丹圣

Rank: 8Rank: 8

积分
1700
发表于 昨天 23:38 | 显示全部楼层
你肯定搞错了。出现这样的情况,肯定是不是微软更新导致的,微软在更新也不会更新你pytorch里面的dll,这是你安装pytorch自带的,我猜你代码大概率有bug,因为看你结构用nn.py就知道你这个是dfl的魔改,伪pytorch版的dfl。对于dfl出现这样的情况,大概率是你导入语句有问题,比方说pyqt5和torch导入顺序import pyqt5之类等等。
回复 支持 反对

使用道具 举报

33

主题

224

帖子

1700

积分

初级丹圣

Rank: 8Rank: 8

积分
1700
发表于 22 小时前 | 显示全部楼层
wtxx8888 发表于 2026-7-16 00:54
仔细看 楼主的文字。
人家 是报错后,就这么解决的!你还来个 我猜?
看文字,能否仔细点呢??? ...

不是我猜,而是我说的也是事实,真要验证究竟是谁对谁错,需要楼主再次降级把版本弄不一致,再来测试下,假如能正常运行,则我对,假如不能正常运行,则他错,或者你装pytorch,然后把vc++弄不一致,你测试下看看pytorch能否运行?会不会导致dll动态链错误?90%的情况下都是软件冲突,冲突的本质就是torch和pyqt的冲突导致无法加载dll,说白点就是假如他以前能正常运行,则最大可能就是他电脑启动的软件中有pyqt或者torch为框架的软件,导致他再次启动会由于冲突无法加载dll,这样的情况下,等他的软件都启动完毕后或者关闭后,或者电脑等一会再运行dfl,仍然能正常运行
回复 支持 反对

使用道具 举报

QQ|Archiver|手机版|deepfacelab中文网 |网站地图

GMT+8, 2026-7-16 23:47 , Processed in 0.277871 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表