(torch) E:\2-三维点云课程\PersFormer_3DLane-main (1)\PersFormer_3DLane-main\models\ops>python setup.py build_ext --inplace running build_ext D:\anaconda3\envs\torch\lib\site-packages\torch\utils\cpp_extension.py:380: UserWarning: Error checking compiler version for cl: [WinError 2] 系统找不到指定的文件。 warnings.warn(f'Error checking compiler version for {compiler}: {error}') building 'MultiScaleDeformableAttention' extension creating E:\2-三维点云课程\PersFormer_3DLane-main (1)\PersFormer_3DLane-main\models\ops\build\temp.win-amd64-cpython-38\Release\2-三维点云课程\PersFormer_3DLane-main (1)\PersFormer_3DLane-main\models\ops\src\cpu creating E:\2-三维点云课程\PersFormer_3DLane-main (1)\PersFormer_3DLane-main\models\ops\build\temp.win-amd64-cpython-38\Release\2-三维点云课程\PersFormer_3DLane-main (1)\PersFormer_3DLane-main\models\ops\src\cuda D:\anaconda3\envs\torch\lib\site-packages\torch\utils\cpp_extension.py:1965: UserWarning: TORCH_CUDA_ARCH_LIST is not set, all archs for visible cards are included for compilation. If this is not desired, please set os.environ['TORCH_CUDA_ARCH_LIST']. warnings.warn( Emitting ninja build file E:\2-三维点云课程\PersFormer_3DLane-main (1)\PersFormer_3DLane-main\models\ops\build\temp.win-amd64-cpython-38\Release\build.ninja... Compiling objects... Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N) ninja: error: 'E:/2-三维点云课程/PersFormer_3DLane-main (1)/PersFormer_3DLane-main/models/ops/src/cpu/ms_deform_attn_cpu.cpp', needed by 'E:/2-三维点云课程/PersFormer_3DLane-main (1)/PersFormer_3DLane-main/models/ops/build/temp.win-amd64-cpython-38/Release/2-三维点云课程/PersFormer_3DLane-main (1)/PersFormer_3DLane-main/models/ops/src/cpu/ms_deform_attn_cpu.obj', missing and no known rule to make it Traceback (most recent call last): File "D:\anaconda3\envs\torch\lib\site-packages\torch\utils\cpp_extension.py", line 2105, in _run_ninja_build subprocess.run( File "D:\anaconda3\envs\torch\lib\subprocess.py", line 516, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1. The above exception was the direct cause of the following exception: Traceback (most recent call last): File "setup.py", line 79, in <module> setup( File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\__init__.py", line 117, in setup return distutils.core.setup(**attrs) File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\_distutils\core.py", line 183, in setup return run_commands(dist) File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\_distutils\core.py", line 199, in run_commands dist.run_commands() File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\_distutils\dist.py", line 954, in run_commands self.run_command(cmd) File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\dist.py", line 950, in run_command super().run_command(command) File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\_distutils\dist.py", line 973, in run_command cmd_obj.run() File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\command\build_ext.py", line 98, in run _build_ext.run(self) File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\_distutils\command\build_ext.py", line 359, in run self.build_extensions() File "D:\anaconda3\envs\torch\lib\site-packages\torch\utils\cpp_extension.py", line 866, in build_extensions build_ext.build_extensions(self) File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\_distutils\command\build_ext.py", line 476, in build_extensions self._build_extensions_serial() File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\_distutils\command\build_ext.py", line 502, in _build_extensions_serial self.build_extension(ext) File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\command\build_ext.py", line 263, in build_extension _build_ext.build_extension(self, ext) File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\_distutils\command\build_ext.py", line 557, in build_extension objects = self.compiler.compile( File "D:\anaconda3\envs\torch\lib\site-packages\torch\utils\cpp_extension.py", line 838, in win_wrap_ninja_compile _write_ninja_file_and_compile_objects( File "D:\anaconda3\envs\torch\lib\site-packages\torch\utils\cpp_extension.py", line 1785, in _write_ninja_file_and_compile_objects _run_ninja_build( File "D:\anaconda3\envs\torch\lib\site-packages\torch\utils\cpp_extension.py", line 2121, in _run_ninja_build raise RuntimeError(message) from e RuntimeError: Error compiling objects for extension (torch) E:\2-三维点云课程\PersFormer_3DLane-main (1)\PersFormer_3DLane-main\models\ops>python setup.py build_ext --inplace running build_ext D:\anaconda3\envs\torch\lib\site-packages\torch\utils\cpp_extension.py:380: UserWarning: Error checking compiler version for cl: [WinError 2] 系统找不到指定的文件。 warnings.warn(f'Error checking compiler version for {compiler}: {error}') building 'MultiScaleDeformableAttention' extension D:\anaconda3\envs\torch\lib\site-packages\torch\utils\cpp_extension.py:1965: UserWarning: TORCH_CUDA_ARCH_LIST is not set, all archs for visible cards are included for compilation. If this is not desired, please set os.environ['TORCH_CUDA_ARCH_LIST']. warnings.warn( Emitting ninja build file E:\2-三维点云课程\PersFormer_3DLane-main (1)\PersFormer_3DLane-main\models\ops\build\temp.win-amd64-cpython-38\Release\build.ninja... Compiling objects... Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N) ninja: error: 'E:/2-三维点云课程/PersFormer_3DLane-main (1)/PersFormer_3DLane-main/models/ops/src/cpu/ms_deform_attn_cpu.cpp', needed by 'E:/2-三维点云课程/PersFormer_3DLane-main (1)/PersFormer_3DLane-main/models/ops/build/temp.win-amd64-cpython-38/Release/2-三维点云课程/PersFormer_3DLane-main (1)/PersFormer_3DLane-main/models/ops/src/cpu/ms_deform_attn_cpu.obj', missing and no known rule to make it Traceback (most recent call last): File "D:\anaconda3\envs\torch\lib\site-packages\torch\utils\cpp_extension.py", line 2105, in _run_ninja_build subprocess.run( File "D:\anaconda3\envs\torch\lib\subprocess.py", line 516, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1. The above exception was the direct cause of the following exception: Traceback (most recent call last): File "setup.py", line 79, in <module> setup( File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\__init__.py", line 117, in setup return distutils.core.setup(**attrs) File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\_distutils\core.py", line 183, in setup return run_commands(dist) File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\_distutils\core.py", line 199, in run_commands dist.run_commands() File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\_distutils\dist.py", line 954, in run_commands self.run_command(cmd) File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\dist.py", line 950, in run_command super().run_command(command) File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\_distutils\dist.py", line 973, in run_command cmd_obj.run() File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\command\build_ext.py", line 98, in run _build_ext.run(self) File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\_distutils\command\build_ext.py", line 359, in run self.build_extensions() File "D:\anaconda3\envs\torch\lib\site-packages\torch\utils\cpp_extension.py", line 866, in build_extensions build_ext.build_extensions(self) File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\_distutils\command\build_ext.py", line 476, in build_extensions self._build_extensions_serial() File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\_distutils\command\build_ext.py", line 502, in _build_extensions_serial self.build_extension(ext) File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\command\build_ext.py", line 263, in build_extension _build_ext.build_extension(self, ext) File "D:\anaconda3\envs\torch\lib\site-packages\setuptools\_distutils\command\build_ext.py", line 557, in build_extension objects = self.compiler.compile( File "D:\anaconda3\envs\torch\lib\site-packages\torch\utils\cpp_extension.py", line 838, in win_wrap_ninja_compile _write_ninja_file_and_compile_objects( File "D:\anaconda3\envs\torch\lib\site-packages\torch\utils\cpp_extension.py", line 1785, in _write_ninja_file_and_compile_objects _run_ninja_build( File "D:\anaconda3\envs\torch\lib\site-packages\torch\utils\cpp_extension.py", line 2121, in _run_ninja_build raise RuntimeError(message) from e RuntimeError: Error compiling objects for extension
时间: 2025-07-26 22:33:32 浏览: 13
<think>我们遇到了一个编译错误,主要问题是ninja在尝试编译 MultiScaleDeformableAttention扩展时找不到源文件。错误信息:`ninja:error:'E:/2-三维点云课程/PersFormer_3DLane-main (1)/PersFormer_3DLane-main/models/ops/src/cpu/ms_deform_attn_cpu.cpp',needed by... missingand noknown ruleto makeit`原因分析:1.路径问题:路径中包含空格和括号,可能导致ninja或编译工具解析路径时出错。特别是路径中的括号`(1)`和空格。2.文件确实不存在:可能是文件被移动或删除,或者原始代码库中该文件缺失。解决方案:1.尝试将整个项目目录移动到没有空格和特殊字符(如括号)的路径中。例如,将 `E:\2-三维点云课程\PersFormer_3DLane-main(1)`改为一个简单的路径,如`E:\project\PersFormer_3DLane`。2.检查`src/cpu/`目录下是否存在 `ms_deform_attn_cpu.cpp`文件。如果不存在,可能需要从原始仓库重新获取该文件。另外,错误中还有关于编译器 cl找不到的警告(WinError2),这表明系统可能没有安装 VisualStudio的 C++编译器。在Windows上编译PyTorch C++扩展需要安装Visual Studio(建议2019版)并选择“使用C++的桌面开发”工作负载。步骤:1.安装 VisualStudio2019并确保安装了C++构建工具。2.将项目移动到简单路径(无空格和特殊字符)。3.如果问题仍然存在,尝试设置环境变量TORCH_CUDA_ARCH_LIST为当前 GPU的计算能力(如8.6对应RTX30系列),或者根据错误提示设置环境变量以避免编译所有架构。例如:`setTORCH_CUDA_ARCH_LIST=8.6`(在命令提示符中执行,或者通过系统环境变量设置)4.确保 ninja已安装(通常通过 pip安装PyTorch时会自动安装)。如果上述方法无效,可以尝试手动指定编译器路径或检查环境变量 PATH是否包含 VisualStudio的 cl.exe所在目录(通常在`VC\Tools\MSVC\版本号\bin\Hostx64\x64`下)。注意:在Anaconda环境中,有时需要激活环境并设置环境变量,例如:call"C:\Program Files(x86)\Microsoft VisualStudio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"然后再运行编译命令。但是,由于错误直接指向文件缺失,首先解决路径问题。根据错误信息,我们也可以看到路径被拆分了,可能是因为路径中的空格和括号导致构建系统无法正确识别。因此,最直接的建议是:将项目移动到不含空格和特殊字符的路径,例如:`E:\Projects\PersFormer_3DLane`。如果移动后仍然报错,请检查源文件是否确实存在于新路径的对应位置。如果问题仍然存在,可能需要检查setup.py文件中的路径配置是否正确。由于用户提供了两次相同的错误,我们假设用户已经尝试了两次,所以重点解决路径问题。回答将按照要求,先给出解决方案,然后提出相关问题。</think>根据错误日志分析,您在Windows系统上编译PyTorch自定义算子(MultiScaleDeformableAttention)时遇到两个关键问题:
### 主要错误原因
1. **编译器路径问题**
`Error checking compiler version for cl: [WinError 2] 系统找不到指定的文件`
→ 缺少Visual Studio C++编译环境(MSVC)
2. **文件路径解析失败**
`ninja: error: 'E:/2-三维点云课程/.../ms_deform_attn_cpu.cpp' ... missing`
→ 路径包含**中文目录名**和**特殊字符(括号)**导致ninja编译系统解析失败
### 解决方案
#### 第一步:安装编译环境
1. 安装 **Visual Studio 2019/2022**
勾选工作负载:
- `使用C++的桌面开发`
- `Windows 10/11 SDK`
- 确保安装 **MSVC v142** 编译器
2. 验证编译器(CMD执行):
```bash
where cl
# 应返回类似:C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\bin\Hostx64\x64\cl.exe
```
#### 第二步:修正项目路径
1. **移除路径中的中文和特殊字符**
将项目移动到纯英文路径,例如:
`E:\Projects\PersFormer_3DLane`
(原路径`E:\2-三维点云课程\PersFormer_3DLane-main (1)\`含中文和括号)
2. **缩短路径层级**
避免过深目录嵌套(建议不超过3级)
#### 第三步:设置环境变量
```bash
# 设置CUDA架构(根据你的GPU)
set TORCH_CUDA_ARCH_LIST=8.6 # RTX 30系列设为8.6
# 激活VS编译环境
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
```
#### 第四步:重新编译
```bash
# 清除旧编译文件
python setup.py clean
# 重新编译
python setup.py build_ext --inplace
```
### 注意事项
- 确保`src/cpu/ms_deform_attn_cpu.cpp`文件实际存在
- 检查PyTorch与CUDA版本匹配性(`torch.__version__`和`nvcc -V`)
- 中文Windows用户需确认系统区域设置未限制文件路径(控制面板 → 区域 → 管理 → 非Unicode程序语言 → 更改为"中文(简体)")
阅读全文
相关推荐



















