Pycharm运行SAM2中的视频样例出错
报错cannot import name '_C' from 'sam2'
前往GitHub搜索
运行(pytorch) E:\segment-anything-2-main>python setup.py build install
running build running build_py running build_ext D:\anaconda3\envs\pytorch\lib\site-packages\torch\utils\cpp_extension.py:502: UserWarning: Attempted to use ninja as the BuildExtension backend but we could not find ninja.. Falling back to using the slow distutils backend. warnings.warn(msg.format('we could not find ninja.')) D:\anaconda3\envs\pytorch\lib\site-packages\torch\utils\cpp_extension.py:383: UserWarning: Error checking compiler version for cl: [WinError 2] 系统找不到指定的文件。 warnings.warn(f'Error checking compiler version for {compiler}: {error}') D:\anaconda3\envs\pytorch\lib\site-packages\torch\utils\cpp_extension.py:414: UserWarning: The detected CUDA version (12.3) has a minor version mismatch with the version that was used to compile PyTorch (12.1). Most likely this shouldn't be a problem. warnings.warn(CUDA_MISMATCH_WARN.format(cuda_str_version, torch.version.cuda)) building 'sam2._C' extension "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\bin\nvcc" -c sam2/csrc/connected_components.cu -o build\temp.win-amd64-cpython-39\Release\sam2/csrc/connected_components.obj -ID:\anaconda3\envs\pytorch\lib\site-packages\torch\include -ID:\anaconda3\envs\pytorch\lib\site-packages\torch\include\torch\csrc\api\include -ID:\anaconda3\envs\pytorch\lib\site-packages\torch\include\TH -ID:\anaconda3\envs\pytorch\lib\site-packages\torch\include\THC "-IC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\include" -ID:\anaconda3\envs\pytorch\include -ID:\anaconda3\envs\pytorch\Include -IE:\VS\VC\Tools\MSVC\14.40.33807\include -IE:\VS\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" -Xcudafe --diag_suppress=dll_interface_conflict_dllexport_assumed -Xcudafe --diag_suppress=dll_interface_conflict_none_assumed -Xcudafe --diag_suppress=field_without_dll_interface -Xcudafe --diag_suppress=base_class_has_different_dll_interface -Xcompiler /EHsc -Xcompiler /wd4068 -Xcompiler /wd4067 -Xcompiler /wd4624 -Xcompiler /wd4190 -Xcompiler /wd4018 -Xcompiler /wd4275 -Xcompiler /wd4267 -Xcompiler /wd4244 -Xcompiler /wd4251 -Xcompiler /wd4819 -Xcompiler /MD -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -DCUDA_HAS_FP16=1 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=_C -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 -std=c++17 --use-local-env connected_components.cu C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\include\crt/host_config.h(164): fatal error C1189: #error: -- unsupported Microsoft Visual Studio version! Only the versions between 2017 and 2022 (inclusive) are supported! The nvcc flag '-allow-unsupported-compiler' can be used to override this version check; however, using an unsupported host compiler may cause compilation failure or incorrect run time execution. Use at your own risk. error: command 'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v12.3\\bin\\nvcc.exe' failed with exit code 2
报错
询问gpt
根据您提供的错误信息,主要的问题是您使用的 Microsoft Visual Studio 版本不被 CUDA 12.3 支持。CUDA 12.3 仅支持 Microsoft Visual Studio 2017 到 2022 之间的版本。解决这个问题有几种方法:
方法一:更换支持的 Microsoft Visual Studio 版本
您可以安装一个支持的 Microsoft Visual Studio 版本(2017 到 2022),并将其设置为默认的编译器。
- 安装一个支持的 Microsoft Visual Studio 版本。
- 确保在环境变量中将新安装的 Visual Studio 的路径添加到
PATH
中。
方法二:使用 -allow-unsupported-compiler
标志
如果您希望继续使用当前的 Visual Studio 版本,可以尝试使用 -allow-unsupported-compiler
标志来绕过版本检查,但请注意这可能导致编译失败或运行时错误。
- 打开
setup.py
文件。 - 找到
nvcc
编译器选项部分。 - 添加
-allow-unsupported-compiler
标志
虽然已经安装VS但是环境尚未配置
配置Visual Studio编译器路径需要设置环境变量。以下是设置环境变量的步骤:
-
打开系统属性:
- 按
Win + Pause
键,或者右键单击 "此电脑" 然后选择 "属性"。
- 按
-
进入环境变量:
- 点击 "高级系统设置"。
- 点击 "环境变量" 按钮。
-
设置
VS150COMNTOOLS
或相关变量:- 在 "系统变量" 区域,找到
Path
变量,点击 "编辑"。 - 添加Visual Studio的编译器路径。例如,Visual Studio 2019的路径通常是C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\
- 在 "系统变量" 区域,找到
4.设置CL
编译器路径:
- 添加以下路径(根据实际安装路径进行调整)
- C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64
步骤4:通过命令行工具设置环境
Visual Studio提供了命令行工具来设置编译器环境。打开命令提示符(
cmd
)并运行以下命令:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
步骤5:重试编译
重新运行您的编译命令:python setup.py build_ext --inplace
报错:
(pytorch) E:\segment-anything-2-main>python setup.py build_ext --inplace running build_ext D:\anaconda3\envs\pytorch\lib\site-packages\torch\utils\cpp_extension.py:502: UserWarning: Attempted to use ninja as the BuildExtension backend but we could not find ninja.. Falling back to using the slow distutils backend. warnings.warn(msg.format('we could not find ninja.')) Traceback (most recent call last): File "E:\segment-anything-2-main\setup.py", line 56, in <module> setup( File "D:\anaconda3\envs\pytorch\lib\site-packages\setuptools\__init__.py", line 107, in setup return distutils.core.setup(**attrs) File "D:\anaconda3\envs\pytorch\lib\site-packages\setuptools\_distutils\core.py", line 185, in setup return run_commands(dist) File "D:\anaconda3\envs\pytorch\lib\site-packages\setuptools\_distutils\core.py", line 201, in run_commands dist.run_commands() File "D:\anaconda3\envs\pytorch\lib\site-packages\setuptools\_distutils\dist.py", line 969, in run_commands self.run_command(cmd) File "D:\anaconda3\envs\pytorch\lib\site-packages\setuptools\dist.py", line 1234, in run_command super().run_command(command) File "D:\anaconda3\envs\pytorch\lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command cmd_obj.run() File "D:\anaconda3\envs\pytorch\lib\site-packages\setuptools\command\build_ext.py", line 84, in run _build_ext.run(self) File "D:\anaconda3\envs\pytorch\lib\site-packages\setuptools\_distutils\command\build_ext.py", line 345, in run self.build_extensions() File "D:\anaconda3\envs\pytorch\lib\site-packages\torch\utils\cpp_extension.py", line 511, in build_extensions compiler_name, compiler_version = self._check_abi() File "D:\anaconda3\envs\pytorch\lib\site-packages\torch\utils\cpp_extension.py", line 903, in _check_abi raise UserWarning(msg) UserWarning: It seems that the VC environment is activated but DISTUTILS_USE_SDK is not set.This may lead to multiple activations of the VC env.Please set DISTUTILS_USE_SDK=1
and try again.
- 在 "系统变量" 区域,点击 "新建"。
- 变量名输入:
DISTUTILS_USE_SDK
- 变量值输入:
1
- 点击 "确定"。
修改setup.py
from setuptools import find_packages, setup
from torch.utils.cpp_extension import BuildExtension, CUDAExtension
# Package metadata
NAME = "SAM 2"
VERSION = "1.0"
DESCRIPTION = "SAM 2: Segment Anything in Images and Videos"
URL = "https://github.com/facebookresearch/segment-anything-2"
AUTHOR = "Meta AI"
AUTHOR_EMAIL = "segment-anything@meta.com"
LICENSE = "Apache 2.0"
# Read the contents of README file
with open("README.md", "r") as f:
LONG_DESCRIPTION = f.read()
# Required dependencies
REQUIRED_PACKAGES = [
"torch>=2.3.1",
"torchvision>=0.18.1",
"numpy>=1.24.4",
"tqdm>=4.66.1",
"hydra-core>=1.3.2",
"iopath>=0.1.10",
"pillow>=9.4.0",
]
EXTRA_PACKAGES = {
"demo": ["matplotlib>=3.9.1", "jupyter>=1.0.0", "opencv-python>=4.7.0"],
"dev": ["black==24.2.0", "usort==1.0.2", "ufmt==2.0.0b2"],
}
def get_extensions():
srcs = ["sam2/csrc/connected_components.cu"]
compile_args = {
"cxx": [],
"nvcc": [
"-DCUDA_HAS_FP16=1",
"-D__CUDA_NO_HALF_OPERATORS__",
"-D__CUDA_NO_HALF_CONVERSIONS__",
"-D__CUDA_NO_HALF2_OPERATORS__",
"-allow-unsupported-compiler", # 添加此标志
],
}
ext_modules = [CUDAExtension("sam2._C", srcs, extra_compile_args=compile_args)]
return ext_modules
# Setup configuration
setup(
name=NAME,
version=VERSION,
description=DESCRIPTION,
long_description=LONG_DESCRIPTION,
long_description_content_type="text/markdown",
url=URL,
author=AUTHOR,
author_email=AUTHOR_EMAIL,
license=LICENSE,
packages=find_packages(exclude="notebooks"),
install_requires=REQUIRED_PACKAGES,
extras_require=EXTRA_PACKAGES,
python_requires=">=3.10.0",
ext_modules=get_extensions(),
cmdclass={"build_ext": BuildExtension.with_options(no_python_abi_suffix=True)},
)
成功运行