You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建ONNX时提示‘gen_proto.py不是Conan命令’的问题排查

问题:CMake生成时误将gen_proto.py当作Conan命令执行导致ONNX构建失败

执行conan install . --output-folder=build --build=missing -v成功安装依赖后,在Visual Studio中运行CMake生成时失败,系统错误地将gen_proto.py作为Conan命令执行,提示'C:/Users/YawManu/.conan2/p/b/onnxeaf435b38615b/b/src/onnx/gen_proto.py' is not a Conan command,导致Ninja构建终止,ONNX包构建失败。

conanfile.py内容

import os

from conan import ConanFile

class ProjectRecipe(ConanFile):
    settings = "os", "compiler", "build_type", "arch"
    generators = "CMakeToolchain", "CMakeDeps"

    def requirements(self):
        self.requires("armadillo/12.6.4")
        self.requires("openssl/3.3.1")
        self.requires("onnxruntime/1.18.1")
        self.requires("boost/1.86.0", force=True)

Conan安装成功输出(后半部分)

======== Installing packages ========
abseil/20240116.1: Already installed! (1 of 15)
bzip2/1.0.8: Already installed! (2 of 15)
cpuinfo/cci.20231129: Already installed! (3 of 15)
flatbuffers/23.5.26: Already installed! (4 of 15)
openblas/0.3.25: Already installed! (5 of 15)
zlib/1.3.1: Already installed! (6 of 15)
armadillo/12.6.4: Already installed! (7 of 15)
boost/1.86.0: Already installed! (8 of 15)
boost/1.86.0: Disabled magic autolinking (smart and magic decisions)
protobuf/3.21.12: Already installed! (9 of 15)
re2/20231101: Already installed! (10 of 15)
openssl/3.3.1: Already installed! (11 of 15)
onnx/1.16.2: Already installed! (12 of 15)
libcurl/8.10.1: Already installed! (13 of 15)
date/3.0.1: Already installed! (14 of 15)
onnxruntime/1.18.1: Already installed! (15 of 15)
WARN: deprecated: Usage of deprecated Conan 1.X features that will be removed in Conan 2.X:
WARN: deprecated:     'cpp_info.names' used in: libcurl/8.10.1, flatbuffers/23.5.26, openblas/0.3.25, zlib/1.3.1, onnx/1.16.2, openssl/3.3.1, protobuf/3.21.12, abseil/20240116.1, boost/1.86.0, armadillo/12.6.4, bzip2/1.0.8
WARN: deprecated:     'cpp_info.build_modules' used in: flatbuffers/23.5.26, onnx/1.16.2, openssl/3.3.1, protobuf/3.21.12, abseil/20240116.1, armadillo/12.6.4, bzip2/1.0.8
WARN: deprecated:     'env_info' used in: flatbuffers/23.5.26, openblas/0.3.25, openssl/3.3.1, protobuf/3.21.12, boost/1.86.0, bzip2/1.0.8
WARN: deprecated:     'cpp_info.filenames' used in: flatbuffers/23.5.26, protobuf/3.21.12, boost/1.86.0
WARN: deprecated:     'user_info' used in: boost/1.86.0

======== Finalizing install (deploy, generators) ========
conanfile.py: Writing generators to C:\Users\YawManu\source\repos\CMakeProject1\build
conanfile.py: Generator 'CMakeToolchain' calling 'generate()'
conanfile.py: CMakeToolchain generated: conan_toolchain.cmake
conanfile.py: CMakeToolchain: Preset 'conan-default' added to CMakePresets.json.
    (cmake>=3.23) cmake --preset conan-default
    (cmake<3.23) cmake <path> -G "Visual Studio 17 2022" -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake  -DCMAKE_POLICY_DEFAULT_CMP0091=NEW
conanfile.py: CMakeToolchain generated: C:\Users\YawManu\source\repos\CMakeProject1\build\CMakePresets.json
conanfile.py: CMakeToolchain generated: C:\Users\YawManu\source\repos\CMakeProject1\CMakeUserPresets.json
conanfile.py: Generator 'CMakeDeps' calling 'generate()'
conanfile.py: CMakeDeps necessary find_package() and targets for your CMakeLists.txt
    find_package(Armadillo)
    find_package(onnxruntime)
    find_package(OpenSSL)
    find_package(Boost)
    target_link_libraries(... Armadillo::Armadillo onnxruntime::onnxruntime openssl::openssl boost::boost)
conanfile.py: Generating aggregated env files
conanfile.py: Generated aggregated env files: ['conanbuild.bat', 'conanrun.bat']
Install finished successfully

CMake生成错误日志(后半部分)

1> [CMake] [DEBUG:VsDevCmd.bat] --------------------- VS Developer Command Prompt Environment [post-init] ---------------------
1> [CMake] [vcvarsall.bat] Environment initialized for: 'x64'
1> [CMake] [1/64] Running gen_proto.py on onnx/onnx.in.proto
1> [CMake] FAILED: onnx/onnx-ml.proto C:/Users/YawManu/.conan2/p/b/onnxeaf435b38615b/b/build/Debug/onnx/onnx-ml.proto 
1> [CMake] C:\WINDOWS\system32\cmd.exe /C "cd /D C:\Users\YawManu\.conan2\p\b\onnxeaf435b38615b\b\build\Debug && "C:\Program Files\Conan\conan\conan.exe" C:/Users/YawManu/.conan2/p/b/onnxeaf435b38615b/b/src/onnx/gen_proto.py -p onnx -o C:/Users/YawManu/.conan2/p/b/onnxeaf435b38615b/b/build/Debug/onnx onnx -m --protoc_path C:/Users/YawManu/.conan2/p/proto8625022988b17/p/bin/protoc.exe"
1> [CMake] 'C:/Users/YawManu/.conan2/p/b/onnxeaf435b38615b/b/src/onnx/gen_proto.py' is not a Conan command. See 'conan --help'.
1> [CMake] 
1> [CMake] 
1> [CMake] 
1> [CMake] ERROR: Unknown command 'C:/Users/YawManu/.conan2/p/b/onnxeaf435b38615b/b/src/onnx/gen_proto.py'
1> [CMake] 
1> [CMake] ninja: build stopped: subcommand failed.
1> [CMake] 
1> [CMake] onnx/1.16.2: ERROR: 
1> [CMake] Package '6a7a6783386189c6725e6d4d255e7cdc4e450d20' build failed
1> [CMake] onnx/1.16.2: WARN: Build folder C:\Users\YawManu\.conan2\p\b\onnxeaf435b38615b\b\build\Debug
1> [CMake] ERROR: onnx/1.16.2: Error in build() method, line 136
1> [CMake]  cmake.build()
1> [CMake]  ConanException: Error 1 while executing
1> [CMake] CMake Error at cmake-conan/conan_provider.cmake:483 (message):
1> [CMake]   Conan install failed='1'
1> [CMake] Call Stack (most recent call first):
1> [CMake]   cmake-conan/conan_provider.cmake:591 (conan_install)
1> [CMake]   CMakeLists.txt:14 (find_package)
1> [CMake] -- Configuring incomplete, errors occurred!
1> 'C:\WINDOWS\system32\cmd.exe' '/c "%SYSTEMROOT%\System32\chcp.com 65001 >NUL && "C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\2022\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe"  -G "Ninja"  -DCMAKE_C_COMPILER:STRING="cl.exe" -DCMAKE_CXX_COMPILER:STRING="cl.exe" -DCMAKE_BUILD_TYPE:STRING="Debug" -DCMAKE_INSTALL_PREFIX:PATH="C:/Users/YawManu/source/repos/CMakeProject1/out/install/x64-debug"   -DCMAKE_MAKE_PROGRAM="C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\2022\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\Ninja\ninja.exe" "C:\Users\YawManu\source\repos\CMakeProject1" 2>&1"' execution failed with error: ''C:\WINDOWS\system32\cmd.exe' '/c "%SYSTEMROOT%\System32\chcp.com 65001 >NUL && "C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\2022\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe"  -G "Ninja"  -DCMAKE_C_COMPILER:STRING="cl.exe" -DCMAKE_CXX_COMPILER:STRING="cl.exe" -DCMAKE_BUILD_TYPE:STRING="Debug" -DCMAKE_INSTALL_PREFIX:PATH="C:/Users/YawManu/source/repos/CMakeProject1/out/install/x64-debug"   -DCMAKE_MAKE_PROGRAM="C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\2022\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\Ninja\ninja.exe" "C:\Users\YawManu\source\repos\CMakeProject1" 2>&1"' returned with exit code: 1'.

引发错误的Ninja规则

#############################################
# Custom command for onnx\onnx-ml.proto

build onnx\onnx-ml.proto | ${cmake_ninja_workdir}onnx\onnx-ml.proto: CUSTOM_COMMAND C$:\Users\YawManu\.conan2\p\b\onnxeaf435b38615b\b\src\onnx\onnx.in.proto
  COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\Users\YawManu\.conan2\p\b\onnxeaf435b38615b\b\build\Debug && "C:\Program Files\Conan\conan\conan.exe" C:/Users/YawManu/.conan2/p/b/onnxeaf435b38615b/b/src/onnx/gen_proto.py -p onnx -o C:/Users/YawManu/.conan2/p/b/onnxeaf435b38615b/b/build/Debug/onnx onnx -m --protoc_path C:/Users/YawManu/.conan2/p/proto8625022988b17/p/bin/protoc.exe"
  DESC = Running gen_proto.py on onnx/onnx.in.proto
  restat = 1

问题分析与解决思路

  • 核心原因:Ninja规则中错误地将Python脚本gen_proto.py的执行命令前缀改为了conan.exe,正确的命令应该是调用Python解释器执行该脚本,而非通过Conan执行。
  • 可能触发点:
    1. Conan的环境变量覆盖了Python的调用路径,导致CMake生成命令时误将Python路径替换为Conan路径。
    2. ONNX的Conan recipe中存在脚本生成逻辑错误,或者CMake配置被Conan工具链意外修改。
  • 解决步骤:
    1. 检查系统环境变量,确保python.exe的路径优先级高于Conan路径,避免命令解析混淆。
    2. 手动修改ONNX构建目录下的Ninja规则,将命令中的"C:\Program Files\Conan\conan\conan.exe"替换为Python解释器路径(如"C:\Python39\python.exe"),重新执行CMake生成。
    3. 尝试指定ONNX包的预编译版本,避免在本地构建ONNX:在conanfile.py中添加self.requires("onnx/1.16.2", options={"build_from_source": False}),重新运行Conan安装。
    4. 更新Conan到最新稳定版本,修复可能存在的工具链生成bug。

内容的提问来源于stack exchange,提问作者Yaw Sparrow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:27:02