2

我正在尝试关注这篇文章,列出 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,第 123 行,在 iter_modules 中引发 ValueError(“路径必须为无或要查找的路径列表”)

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

PS 1.我检查了NXOpen.__path__属性。它是一个字符串类型属性,值为NXOpenPackagePath!

PS 2.我在 SIEMENS PLM 论坛上问了一个后续问题。

PS3。我也试过

import os
from pathlib import Path

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

这里这里,但现在我得到了错误:

TypeError:“WindowsPath”对象不可迭代

4

1 回答 1

2

从 的源代码来看iter_modules,它需要 list 参数,而您传递一个Path object

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

于 2021-08-27T10:59:00.463 回答