Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Spack info.print\u text\u info_Python_Package_Spack - Fatal编程技术网

Python Spack info.print\u text\u info

Python Spack info.print\u text\u info,python,package,spack,Python,Package,Spack,AttributeError:“str”对象没有属性“build\u system\u class” 我在尝试运行此代码时遇到此错误。有人知道怎么回事吗 import spack.cmd.info import sys pkg = sys.argv[1] spack.cmd.info.print_text_info(pkg) 根据我从你的问题和文件中看到的情况,我假设如下: 您正在尝试使用Spack API() 您正在spack软件包管理器之上构建某种自动化,我怀疑它是一个软件包 您正在使用

AttributeError:“str”对象没有属性“build\u system\u class”

我在尝试运行此代码时遇到此错误。有人知道怎么回事吗

import spack.cmd.info
import sys

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

根据我从你的问题和文件中看到的情况,我假设如下:

  • 您正在尝试使用Spack API()
  • 您正在spack软件包管理器之上构建某种自动化,我怀疑它是一个软件包
  • 您正在使用Python()的sys包
  • 您遇到的问题与Spack无关,而是与Python或面向对象编程有关。 您正在获取一个字符串sys.argv[1],该字符串表示命令行中提供的包名,并将其提供给一个方法print_text_info,该方法需要PackageBase类型的对象或其继承项,例如AutotoolsPackage

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

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

    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\u text\u info()
    ,只需导入spack.repo并调用
    spack.repo.get(name)

    我添加了python标记,因为这是一个纯python问题,其根本原因与spack无关。