cannot import name ‘_C‘ from ‘sam2‘解决

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),并将其设置为默认的编译器。

  1. 安装一个支持的 Microsoft Visual Studio 版本。
  2. 确保在环境变量中将新安装的 Visual Studio 的路径添加到 PATH 中。

方法二:使用 -allow-unsupported-compiler 标志

如果您希望继续使用当前的 Visual Studio 版本,可以尝试使用 -allow-unsupported-compiler 标志来绕过版本检查,但请注意这可能导致编译失败或运行时错误。

  1. 打开 setup.py 文件。
  2. 找到 nvcc 编译器选项部分。
  3. 添加 -allow-unsupported-compiler 标志

虽然已经安装VS但是环境尚未配置

配置Visual Studio编译器路径需要设置环境变量。以下是设置环境变量的步骤:

  1. 打开系统属性

    • Win + Pause 键,或者右键单击 "此电脑" 然后选择 "属性"。
  2. 进入环境变量

    • 点击 "高级系统设置"。
    • 点击 "环境变量" 按钮。
  3. 设置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)},
)

 成功运行

 

引用和是关于Matplotlib的警告信息,这些警告信息表示Matplotlib当前使用的是非GUI后端,因此无法显示图形。具体来说,警告信息中提到了使用的后端名称,如"agg"和"module://ipykernel.pylab.backend_inline"。这些警告信息通常与绘图操作有关,可能是由于缺少图形界面或配置不正确导致的。 对于问题的背景,引用中提到了一些相关信息,包括使用的后端名称以及请求数据的网址。这些信息可能与问题的背景有关,但是不足以提供一个明确的答案。 综上所述,根据引用的内容,可以得知警告信息是关于Matplotlib后端的问题,表示当前后端无法显示图形。然而,要解决这个问题,还需要更多的上下文信息和代码细节。123 #### 引用[.reference_title] - *1* *3* [UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show。](https://blog.csdn.net/a18892061545/article/details/122004704)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* [Matplotlib 3.0.0及以上版本因backend问题不能显示图片及解决](https://blog.csdn.net/weixin_42610531/article/details/94718670)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值