首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spack info.print_text_info

Spack info.print_text_info
EN

Stack Overflow用户
提问于 2021-02-03 01:34:57
回答 1查看 41关注 0票数 0

AttributeError: 'str' object has no attribute 'build_system_class'

当我试图运行这段代码时,我得到了这个错误。有人知道哪里出了问题吗?

代码语言:javascript
复制
import spack.cmd.info
import sys

pkg = sys.argv[1]
spack.cmd.info.print_text_info(pkg)
EN

回答 1

Stack Overflow用户

发布于 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)

  • You正在spack包管理器之上构建某种自动化,我怀疑它是一个包。

  • 您正在使用
  1. 的sys包

您遇到的问题与Spack无关,而是与Python或面向对象编程有关。您正在获取一个字符串sys.argv1,该字符串表示命令行中提供的包名,并将其提供给方法print_text_info,该方法需要一个PackageBase类型的对象或其继承类型,例如AutotoolsPackage。

Python使用字符串调用该方法,并调用一个PackageBase类型的成员,该成员对于字符串是不存在的,从而导致上述错误。

如果您检查spack的info.py,您可以看到它在第一次尝试调用方法build_system_class时失败。

代码语言:javascript
复制
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命令),您可以看到如何查找名称以获取包实例:

代码语言:javascript
复制
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)即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66014770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档