吾生有涯 学海无涯
析模有界 知识无界

PyFluent 导入(app_utilities_pb2)错误排查与修复

直接通过 pip 命令 pip install pyansys 安装 pyansys后,当执行 import ansys.fluent.core as pyfluent 时报错。错误信息如下图所示。

错误基本信息为:

  • 环境:Windows / Miniconda 环境 PyANSYS

  • 错误现象:执行 import ansys.fluent.core as pyfluent 时报错

  • 报错关键信息

    ImportError: cannot import name 'app_utilities_pb2' from 'ansys.api.fluent.v1' (unknown location)

1 错误原因

1.1 直接原因

ansys-fluent-core 的代码在导入链中会执行:

# ansys/fluent/core/services/app_utilities_v1.py
from ansys.api.fluent.v1 import app_utilities_pb2 as AppUtilitiesProtoModule

但当时环境中安装的 ansys-api-fluent 包的 v1 目录下并不存在 app_utilities_pb2.py 这个模块(该接口在较新的 api 包中已被重构成 application_runtime 等其他模块),因此导入失败。

1.2 根本原因(版本错配)

环境中存在的问题是 ansys-fluent-core 与 ansys-api-fluent 两个包版本不兼容:

当时实际版本
问题
ansys-fluent-core 0.39.0
代码中引用了 app_utilities_pb2
ansys-api-fluent 0.6.0

(最新)
已移除 app_utilities 接口
  • ansys-fluent-core 0.39.0 在其元数据里声明依赖 ansys-api-fluent>=0.3.40,因此安装时被解析成了当时最新的 0.6.0
  • 但 0.6.0 的接口已经变了(不再提供 app_utilities_pb2),版本号虽满足 >=0.3.40 约束,接口却已不兼容。
  • 进一步核查发现:0.39.0 引用的 app_utilities 接口在 PyPI 上任何已发布的 ansys-api-fluent 版本(0.2.0 / 0.3.0 / 0.3.43 / 0.6.0 等)中都不存在,说明 0.39.0 这个 PyPI 发布版本本身就是坏的/存在发布错配,无法通过“降级 api 包”来修复。

1.3 附带问题(损坏残留)

site-packages 中还存在一个 pip 安装中断遗留的损坏目录:

~nsys_fluent_core-0.39.0.dist-info

(以 ~ 开头的目录名是 pip 上次安装被中断时留下的半成品标记),它会导致 pip 每次运行都报:

WARNING: Ignoring invalid distribution ~nsys-fluent-core

并可能干扰后续的包版本解析。

1.4 元包约束

通过 pyansys 元包(版本 2026.1.3)安装时,它固定要求 ansys-fluent-core==0.39.0。这是最初被装成 0.39.0 的来源。

2 修复方法

核心思路:放弃不可用的 0.39.0,升级到与当前 ansys-api-fluent 0.6.0 真正匹配的 ansys-fluent-core 0.41.0

步骤 1:升级 ansys-fluent-core 到匹配版本

C:ProgramDataminiconda3envsPyANSYSpython.exe -m pip install "ansys-fluent-core==0.41.0"

0.41.0 的依赖约束为 ansys-api-fluent>=0.6.0,与已安装的 0.6.0 完全一致,导入链中也不再引用 app_utilities_pb2

步骤 2:删除损坏的残留目录

以管理员/有权限的终端执行(删除 workspace 外的 site-packages 文件需谨慎):

rmdir /s /q "C:ProgramDataminiconda3envsPyANSYSLibsite-packages~nsys_fluent_core-0.39.0.dist-info"

步骤 3:验证

C:ProgramDataminiconda3envsPyANSYSpython.exe -c "import ansys.fluent.core as pyfluent; print('OK, version', pyfluent.__version__)"

输出:

OK, version 0.41.0

3 修复后状态

修复前
修复后
ansys-fluent-core 0.39.0

(坏)
0.41.0
ansys-api-fluent 0.6.0 0.6.0

(与 0.41.0 匹配)
~nsys_fluent_core-0.39.0.dist-info
存在(损坏残留)
已删除
import ansys.fluent.core
失败
成功

4 遗留说明与可选后续

  • pip check 会提示:

    pyansys 2026.1.3 has requirement ansys-fluent-core==0.39.0, but you have ansys-fluent-core 0.41.0.

    这是 pyansys 元包声明层面的版本不一致。不影响 pyfluent 单独正常运行,仅为告警。

  • 若希望整族 pyansys 包版本完全一致(消除上述告警),可整体升级:

    C:ProgramDataminiconda3envsPyANSYSpython.exe -m pip install -U pyansys

    该命令会把整个 ansys Python 生态拉到相互匹配的最新版本。升级前建议确认本地 Fluent 求解器版本与 pyfluent 新版本兼容。

5 总结

  1. PyPI 上的 ansys-fluent-core 0.39.0 与其声明的 ansys-api-fluent>=0.3.40 存在发布级接口错配(引用了从未独立发布的 app_utilities 接口),属于该版本本身的缺陷。
  2. 遇到 cannot import name 'xxx_pb2' from 'ansys.api.fluent.vX' 类错误,优先怀疑 fluent-core 与 api-fluent 版本不匹配,而非本地环境损坏。
  3. 排查时可用 pip download == --no-deps -d  配合 zipfile 检查 wheel 内实际包含的模块,快速确认某接口是否存在于特定版本。
  4. 留意 pip 的 WARNING: Ignoring invalid distribution ~xxx 提示,及时处理中断安装残留的 ~ 前缀目录。

注:以上修复过程出自codebuddy+hy3。


(完)

本篇文章来源于微信公众号: CFD之道

赞(0) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《PyFluent 导入(app_utilities_pb2)错误排查与修复》
文章链接:https://www.topcfd.cn/42831/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册