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)发布于 2021-03-05 20:29:12
根据我从您的问题和文档中看到的内容,我假设以下内容:
您正在尝试使用Spack API (https://spack.readthedocs.io/en/latest/spack.cmd.html?highlight=print_text_info#spack.cmd.info.print_text_info)
您遇到的问题与Spack无关,而是与Python或面向对象编程有关。您正在获取一个字符串sys.argv1,该字符串表示命令行中提供的包名,并将其提供给方法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)如果您查看spack.cmd.info中的info()方法(它实现了spack 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)即可。
https://stackoverflow.com/questions/66014770
复制相似问题