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

使用pkgutil列举NXOpen包所有模块/子包报错如何解决?

问题原因
  • 第一个报错ValueError("path must be None or list of path to look for"):
    标准Python包的__path__属性为存储包搜索路径的列表,但NXOpen是西门子定制的Python绑定包,其__path__被重写为单个字符串,不符合pkgutil.iter_modules()要求的入参规范,因此触发报错。
  • 第二个报错TypeError: 'WindowsPath' object is not iterable:
    pkgutil.iter_modules()的第一个入参要求为可迭代的路径集合,你直接传入单个WindowsPath对象,该对象本身不是可迭代的路径序列,因此触发类型错误。
解决方案

仅需要把目标路径包装为单元素的路径列表即可,以下是可运行的参考代码:

import NXOpen
import pkgutil

mod_list = []
# 将NXOpen的__path__字符串包装为单元素列表传入
for importer, modname, ispkg in pkgutil.iter_modules([NXOpen.__path__]):
    mod_list.append(modname)

the_string = "\n".join(mod_list)
lw = NXOpen.Session.GetSession().ListingWindow
lw.Open()
lw.WriteFullline(the_string)
lw.Close()

如果更倾向用__file__推导路径,可以用以下版本:

import NXOpen
import pkgutil
import os

mod_list = []
nxopen_dir = os.path.dirname(NXOpen.__file__)
# 将目录路径字符串包装为单元素列表传入
for importer, modname, ispkg in pkgutil.iter_modules([nxopen_dir]):
    mod_list.append(modname)

the_string = "\n".join(mod_list)
lw = NXOpen.Session.GetSession().ListingWindow
lw.Open()
lw.WriteFullline(the_string)
lw.Close()

内容的提问来源于stack exchange,提问作者Foad S. Farimani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:51:02