AttributeError: 'str' object has no attribute 'build_system_class'
尝试运行此代码时出现此错误。有谁知道出了什么问题?
import spack.cmd.info
import sys
pkg = sys.argv[1]
spack.cmd.info.print_text_info(pkg)
根据我从您的问题和文档中看到的内容,我假设以下内容:
您遇到的问题与 Spack 无关,而是与 Python 或面向对象编程有关。您正在获取一个字符串 sys.argv[1],它表示命令行中提供的包名称,并将其提供给方法 print_text_info,该方法需要 PackageBase 类型的对象或其继承,例如 AutotoolsPackage。
Python使用字符串调用该方法,并调用一个字符串不存在的PackageBase类型的成员,导致上述错误。
如果你检查 spack 的 info.py,你可以看到它在第一次尝试调用方法 build_system_class 时失败了。
def print_text_info(pkg):
"""Print out a plain text description of a package."""
header = section_title(
'{0}: '
).format(pkg.build_system_class) + pkg.name
color.cprint(header)
如果您查看 中的info()
方法(实现spack info
命令)spack.cmd.info
,您可以看到如何查找名称以获取包实例:
def info(parser, args):
pkg = spack.repo.get(args.package)
print_text_info(pkg)
因此,要让PacakgeBase
实例传递给print_text_info()
,您只需要像上面那样import spack.repo
调用。spack.repo.get(name)