在ComfyUI中安装某些module时,并不能直接获得whl文件安装,而是拉取module项目包,并编译生成whl后再安装。例如 insightface、flash-attn、dlib、xformers等。
由于遇到一个问题,尝试需要安装的包没有找到可用的whl文件,于是再次有了这次的尝试,并成功编译安装了insightface。
(先按照1、2、3、4 点配置好环境)
1、首先是要下载安装 Visual Studio 生成工具 2022:
后来发现,生成工具版本不是越高越好,在将生成工具升级到版本17.12后,发现想在python3.11编译flash_attn时不成功, 查到这里有文章《CUDA compatibility with Visual Studio 2022 version 17.10》说:编译工具版本还需要与cuda版本匹配,而我的cuda12.4,按照文章所说,生成工具版本降到17.10比较稳妥。
只好卸载,从这里下载 Fixed version bootstrappers 安装固定版本:
参考文章《Windows 如何仅安装 MSVC 而不安装 Visual Studio》(
选择 Path ,双击添加两条
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.40.33807\bin\Hostx64\x64 C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64
添加 LIB,添加三条(如果之前没有,那点开之后三条中间用英文分号隔开)
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.40.33807\lib\x64 C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\ucrt\x64 C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64
添加 INCLUDE,添加6条
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.40.33807\include C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\winrt C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\cppwinrt C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared
好像除了设置path的第一行有用外,没发现其他设置起什么作用,就是有与没有没什么区别的,直到出现错误:LINK : fatal error LNK1104: 无法打开文件“kernel32.lib,才发现这样的认识是错误的
D:\AI\NATTEN>where /R "C:\Program Files (x86)" kernel32.lib
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\um\arm\kernel32.Lib
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\um\arm64\kernel32.Lib
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\um\x64\kernel32.Lib
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\um\x86\kernel32.Lib
设置环境变量(打开设置--->系统--->关于--->高级系统设置--->环境变量):
下面路径指向 cl.exe ,以令到 错误“H:\V.0.2.7\python_embeded\Lib\site-packages\torch\utils\cpp_extension.py:382: UserWarning: Error checking compiler version for cl: [WinError 2] 系统找不到指定的文件。”消失。
path=C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.40.33807\bin\Hostx64\x64;%path%
2、将完整安装python的目录include复制到pytho_embeded下
解决安装中提示:无法打开包括文件: “Python.h” 的问题。
错误信息:无法打开包括文件: “Python.h”:
"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.41.34120\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -Iinsightface/thirdparty/face3d/mesh/cython -IH:\V.0.2.7\python_embeded\Lib\site-packages\numpy\core\include -IH:\V.0.2.7\python_embeded\include -IH:\V.0.2.7\python_embeded\Include "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.41.34120\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" /EHsc /Tpinsightface/thirdparty/face3d/mesh/cython/mesh_core_cython.cpp /Fobuild\temp.win-amd64-cpython-312\Release\insightface/thirdparty/face3d/mesh/cython/mesh_core_cython.obj
mesh_core_cython.cpp
insightface/thirdparty/face3d/mesh/cython/mesh_core_cython.cpp(36): fatal error C1083: 无法打开包括文件: “Python.h”: No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for insightface
Failed to build insightface
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (insightface)
搜索过很多文章说如何安装python-dev包什么的,都不靠谱(未能解决我的问题),最后还是直接下载 python完整安装包(与ComfyUI的python_embeded相同版本,3.12安装大约345M),安装到某个路径下,并且安装时不勾选设置环境变量(为防止因为环境变量而出现影响comfyUI内嵌python的情况发生),并将文件夹include复制到H:\V.0.2.7\python_embeded\include。
无法打开包括文件: “Python.h” 问题解决。
3、将完整安装python的目录libs复制到pytho_embeded下
解决无法打开文件“python312.lib”。
同样,将完整安装包路径下的文件夹 libs 复制到H:\V.0.2.7\python_embeded\libs即可解决问题
H:\V.0.2.7\python_embeded\Lib\site-packages\numpy\core\include\numpy\npy_1_7_deprecated_api.h(14) : Warning Msg: Using deprecated NumPy API, disable it with #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.41.34120\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:H:\V.0.2.7\python_embeded\libs /LIBPATH:H:\V.0.2.7\python_embeded /LIBPATH:H:\V.0.2.7\python_embeded\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.41.34120\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows