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

系统安装Conan后,是否仍需pip安装才能使用conanfile.py?

Conan 导入错误问题解决

问题描述

我在Windows系统通过官方.exe安装包安装了Conan,使用conanfile.txt安装软件包完全正常,但尝试通过conanfile.py安装时出现以下错误:

======== Input profiles ========
Profile host:
[settings]
arch=x86_64
build_type=Release
compiler=msvc
compiler.cppstd=14
compiler.runtime=dynamic
compiler.runtime_type=Release
compiler.version=194
os=Windows

Profile build:
[settings]
arch=x86_64
build_type=Release
compiler=msvc
compiler.cppstd=14
compiler.runtime=dynamic
compiler.runtime_type=Release
compiler.version=194
os=Windows

ERROR: Error loading conanfile at 'C:\Users\YawManu\source\repos\CMakeProject1\conanfile.py': Unable to load conanfile in C:\Users\YawManu\source\repos\CMakeProject1\conanfile.py
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "C:\Users\YawManu\source\repos\CMakeProject1\conanfile.py", line 3, in <module>
    from conan import Conanfile
ImportError: cannot import name 'Conanfile' from 'conan' (C:\Program Files\Conan\conan\_internal\conan\__init__.pyc)

我的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("boost/1.86.0")
        self.requires("openssl/3.3.1")
        self.requires("onnxruntime/1.18.1")

请问我是否需要在系统安装之外额外执行pip install conan命令?


解决方案

不需要额外执行pip install conan,问题根源是你安装的是Conan 1.x版本,但写的是Conan 2.x的API语法:

  • Conan 1.x的导入语句是from conans import ConanFile(注意包名是conans,类名首字母大写ConanFile)
  • 你写的from conan import Conanfile是Conan 2.x的语法,1.x环境中没有这个导入路径,所以触发错误

你有两种解决方向:

1. 升级到Conan 2.x

卸载当前的Conan 1.x,去官网下载Conan 2.x的.exe安装包重新安装,你的现有conanfile.py代码无需修改,可直接使用。Conan 2.x对cmake_find_package等旧生成器也有兼容支持,同时原生支持CMakeToolchain和CMakeDeps。

2. 适配Conan 1.x修改代码

如果暂时不想升级,需要调整conanfile.py的写法:

  • 把导入语句改为from conans import ConanFile
  • 替换生成器,Conan 1.x没有CMakeToolchain和CMakeDeps,可以改用cmake_find_package和cmake_paths:
    generators = "cmake_find_package", "cmake_paths"
    

另外,conanfile.txt能正常工作是因为Conan 1.x和2.x都兼容这种基础的依赖声明格式,没有涉及版本差异较大的Python API,所以没有报错。


内容的提问来源于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.15 22:46:14