列出 NX Open 包中的所有 modules/subpackages

Listing all the modules/subpackages in the NX Open package

我正在尝试按照 this post,列出 NX Open 包中的所有模块:

import NXOpen
import pkgutil

the_string = ""

package = NXOpen
for importer, modname, ispkg in pkgutil.iter_modules(package.__path__):
    the_string = the_string + modname + "\n"


lw = NXOpen.Session.GetSession().ListingWindow
lw.Open()
lw.WriteFullline(the_string)
lw.Close()

但我收到以下错误消息:


pkgutil.py, line 123, in iter_modules raise ValueError("path must be None or list of path to look for")

问题是什么,我该如何解决?

P.S。 1. 我检查了 NXOpen.__path__ 属性。是字符串类型属性,值为NXOpenPackagePath!

P.S。 2. 我问了一个后续问题,here on the SIEMENS PLM forum

P.S.3. 我也试过

import os
from pathlib import Path

for importer, modname, ispkg in pkgutil.iter_modules(Path(os.path.dirname(NXOpen.__file__))):

来自 here and here,但现在我得到错误:

TypeError: 'WindowsPath' object is not iterable

根据 source code of iter_modules, it expects list argument, while you pass a Path object 判断。

请尝试 pkgutil.iter_modules([os.path.dirname(NXOpen.__file__)])