【问题标题】:ruamel_yaml.constructor.ConstructorError: could not determine a constructor for the tag 'tag:yaml.org,2002:python/tuple' in "<unicode string>"ruamel_yaml.constructor.ConstructorError:无法确定“<unicode string>”中标签“tag:yaml.org,2002:python/tuple”的构造函数
【发布时间】:2021-06-11 00:16:23
【问题描述】:

我正在尝试下载 Kinetics-600 数据集以进行活动识别,为此我遵循此 repo 中的说明:https://github.com/activitynet/ActivityNet

但是,在步骤 conda env create -f environment.yml 我收到此错误:

ruamel_yaml.constructor.ConstructorError: 无法确定一个 “”,第 2 行,第 11 列中标签 'tag:yaml.org,2002:python/tuple' 的构造函数:通道:!!python/tuple

我应该如何解决这个错误?

错误的完整报告是:

(base) /mnt/disks/mona/ActivityNet/Crawler/Kinetics$ conda env create -f environment.yml

# >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<<

    Traceback (most recent call last):
      File "/opt/conda/lib/python3.7/site-packages/conda/exceptions.py", line 1079, in __call__
        return func(*args, **kwargs)
      File "/opt/conda/lib/python3.7/site-packages/conda_env/cli/main.py", line 80, in do_call
        exit_code = getattr(module, func_name)(args, parser)
      File "/opt/conda/lib/python3.7/site-packages/conda_env/cli/main_create.py", line 87, in execute
        spec = specs.detect(name=name, filename=filename, directory=os.getcwd())
      File "/opt/conda/lib/python3.7/site-packages/conda_env/specs/__init__.py", line 43, in detect
        if spec.can_handle():
      File "/opt/conda/lib/python3.7/site-packages/conda_env/specs/yaml_file.py", line 18, in can_handle
        self._environment = env.from_file(self.filename)
      File "/opt/conda/lib/python3.7/site-packages/conda_env/env.py", line 160, in from_file
        return from_yaml(yamlstr, filename=filename)
      File "/opt/conda/lib/python3.7/site-packages/conda_env/env.py", line 141, in from_yaml
        data = yaml_safe_load(yamlstr)
      File "/opt/conda/lib/python3.7/site-packages/conda/common/serialize.py", line 67, in yaml_safe_load
        return yaml.safe_load(string, version="1.2")
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/main.py", line 980, in safe_load
        return load(stream, SafeLoader, version)
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/main.py", line 935, in load
        return loader._constructor.get_single_data()
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/constructor.py", line 108, in get_single_data
        return self.construct_document(node)
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/constructor.py", line 118, in construct_document
        for _dummy in generator:
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/constructor.py", line 691, in construct_yaml_map
        value = self.construct_mapping(node)
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/constructor.py", line 418, in construct_mapping
        return BaseConstructor.construct_mapping(self, node, deep=deep)
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/constructor.py", line 242, in construct_mapping
        value = self.construct_object(value_node, deep=deep)
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/constructor.py", line 164, in construct_object
        data = constructor(self, node)
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/constructor.py", line 711, in construct_undefined
        node.start_mark,
    ruamel_yaml.constructor.ConstructorError: could not determine a constructor for the tag 'tag:yaml.org,2002:python/tuple'
      in "<unicode string>", line 2, column 11:
        channels: !!python/tuple
                  ^ (line: 2)

`$ /opt/conda/bin/conda-env create -f environment.yml`

  environment variables:
            BINARIES_PATH=/opt/deeplearning/binaries
                 CIO_TEST=<not set>
  CONDA_AUTO_UPDATE_CONDA=false
        CONDA_DEFAULT_ENV=base
                CONDA_EXE=/opt/conda/bin/conda
CONDA_MKL_INTERFACE_LAYER_BACKUP=
             CONDA_PREFIX=/opt/conda
    CONDA_PROMPT_MODIFIER=(base)
         CONDA_PYTHON_EXE=/opt/conda/bin/python
               CONDA_ROOT=/opt/conda
              CONDA_SHLVL=1
           CURL_CA_BUNDLE=<not set>
              DL_BIN_PATH=/opt/deeplearning/bin
         DL_METADATA_PATH=/opt/deeplearning/metadata
                  DL_PATH=/opt/deeplearning
        ENV_URI_FILE_PATH=/opt/deeplearning/metadata/env_uri
    ENV_VERSION_FILE_PATH=/opt/deeplearning/metadata/env_version
      FRAMEWORK_FILE_PATH=/opt/deeplearning/metadata/framework
                 INFOPATH=/home/linuxbrew/.linuxbrew/share/info:
        JUPYTER_DEPS_PATH=/opt/deeplearning/jupyter
          LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/nccl2/lib:/usr/local/cuda/extras/CUPT
                          I/lib64
                  MANPATH=/home/linuxbrew/.linuxbrew/share/man:
                     PATH=/opt/conda/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbr
                          ew/sbin:/usr/local/cuda/bin:/opt/conda/bin:/opt/conda/condabin:/usr/lo
                          cal/bin:/usr/bin:/bin:/usr/local/games:/usr/games
               PYTHONPATH=/mnt/disks/mona/SlowFast/slowfast:
       REQUESTS_CA_BUNDLE=<not set>
RESTRICTION_TYPE_FILE_PATH=/opt/deeplearning/restriction
                 SRC_PATH=/opt/deeplearning/src
            SSL_CERT_FILE=<not set>
          TITLE_FILE_PATH=/opt/deeplearning/metadata/title
           TUTORIALS_PATH=/opt/deeplearning/workspace/tutorials
        VERSION_FILE_PATH=/opt/deeplearning/metadata/version
           WORKSPACE_PATH=/opt/deeplearning/workspace

     active environment : base
    active env location : /opt/conda
            shell level : 1
       user config file : /home/mona/.condarc
 populated config files : /opt/conda/.condarc
          conda version : 4.9.2
    conda-build version : not installed
         python version : 3.7.8.final.0
       virtual packages : __cuda=11.0=0
                          __glibc=2.28=0
                          __unix=0=0
                          __archspec=1=x86_64
       base environment : /opt/conda  (writable)
           channel URLs : https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /opt/conda/pkgs
                          /home/mona/.conda/pkgs
       envs directories : /opt/conda/envs
                          /home/mona/.conda/envs
               platform : linux-64
             user-agent : conda/4.9.2 requests/2.24.0 CPython/3.7.8 Linux/4.19.0-13-cloud-amd64 debian/10 glibc/2.28
                UID:GID : 1016:1017
             netrc file : None
           offline mode : False


An unexpected error has occurred. Conda has prepared the above report.

If submitted, this report will be used by core maintainers to improve
future releases of conda.
Would you like conda to send this report to the core maintainers?

[y/N]: y
Upload successful.

Thank you for helping to improve conda.
Opt-in to always sending reports (and not see this message again)
by running

    $ conda config --set report_errors true


$ conda config --set report_errors true

$ conda env create -f environment.yml

# >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<<

    Traceback (most recent call last):
      File "/opt/conda/lib/python3.7/site-packages/conda/exceptions.py", line 1079, in __call__
        return func(*args, **kwargs)
      File "/opt/conda/lib/python3.7/site-packages/conda_env/cli/main.py", line 80, in do_call
        exit_code = getattr(module, func_name)(args, parser)
      File "/opt/conda/lib/python3.7/site-packages/conda_env/cli/main_create.py", line 87, in execute
        spec = specs.detect(name=name, filename=filename, directory=os.getcwd())
      File "/opt/conda/lib/python3.7/site-packages/conda_env/specs/__init__.py", line 43, in detect
        if spec.can_handle():
      File "/opt/conda/lib/python3.7/site-packages/conda_env/specs/yaml_file.py", line 18, in can_handle
        self._environment = env.from_file(self.filename)
      File "/opt/conda/lib/python3.7/site-packages/conda_env/env.py", line 160, in from_file
        return from_yaml(yamlstr, filename=filename)
      File "/opt/conda/lib/python3.7/site-packages/conda_env/env.py", line 141, in from_yaml
        data = yaml_safe_load(yamlstr)
      File "/opt/conda/lib/python3.7/site-packages/conda/common/serialize.py", line 67, in yaml_safe_load
        return yaml.safe_load(string, version="1.2")
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/main.py", line 980, in safe_load
        return load(stream, SafeLoader, version)
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/main.py", line 935, in load
        return loader._constructor.get_single_data()
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/constructor.py", line 108, in get_single_data
        return self.construct_document(node)
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/constructor.py", line 118, in construct_document
        for _dummy in generator:
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/constructor.py", line 691, in construct_yaml_map
        value = self.construct_mapping(node)
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/constructor.py", line 418, in construct_mapping
        return BaseConstructor.construct_mapping(self, node, deep=deep)
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/constructor.py", line 242, in construct_mapping
        value = self.construct_object(value_node, deep=deep)
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/constructor.py", line 164, in construct_object
        data = constructor(self, node)
      File "/opt/conda/lib/python3.7/site-packages/ruamel_yaml/constructor.py", line 711, in construct_undefined
        node.start_mark,
    ruamel_yaml.constructor.ConstructorError: could not determine a constructor for the tag 'tag:yaml.org,2002:python/tuple'
      in "<unicode string>", line 2, column 11:
        channels: !!python/tuple
                  ^ (line: 2)

`$ /opt/conda/bin/conda-env create -f environment.yml`

  environment variables:
            BINARIES_PATH=/opt/deeplearning/binaries
                 CIO_TEST=<not set>
  CONDA_AUTO_UPDATE_CONDA=false
        CONDA_DEFAULT_ENV=base
                CONDA_EXE=/opt/conda/bin/conda
CONDA_MKL_INTERFACE_LAYER_BACKUP=
             CONDA_PREFIX=/opt/conda
    CONDA_PROMPT_MODIFIER=(base)
         CONDA_PYTHON_EXE=/opt/conda/bin/python
               CONDA_ROOT=/opt/conda
              CONDA_SHLVL=1
           CURL_CA_BUNDLE=<not set>
              DL_BIN_PATH=/opt/deeplearning/bin
         DL_METADATA_PATH=/opt/deeplearning/metadata
                  DL_PATH=/opt/deeplearning
        ENV_URI_FILE_PATH=/opt/deeplearning/metadata/env_uri
    ENV_VERSION_FILE_PATH=/opt/deeplearning/metadata/env_version
      FRAMEWORK_FILE_PATH=/opt/deeplearning/metadata/framework
                 INFOPATH=/home/linuxbrew/.linuxbrew/share/info:
        JUPYTER_DEPS_PATH=/opt/deeplearning/jupyter
          LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/nccl2/lib:/usr/local/cuda/extras/CUPT
                          I/lib64
                  MANPATH=/home/linuxbrew/.linuxbrew/share/man:
                     PATH=/opt/conda/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbr
                          ew/sbin:/usr/local/cuda/bin:/opt/conda/bin:/opt/conda/condabin:/usr/lo
                          cal/bin:/usr/bin:/bin:/usr/local/games:/usr/games
               PYTHONPATH=/mnt/disks/mona/SlowFast/slowfast:
       REQUESTS_CA_BUNDLE=<not set>
RESTRICTION_TYPE_FILE_PATH=/opt/deeplearning/restriction
                 SRC_PATH=/opt/deeplearning/src
            SSL_CERT_FILE=<not set>
          TITLE_FILE_PATH=/opt/deeplearning/metadata/title
           TUTORIALS_PATH=/opt/deeplearning/workspace/tutorials
        VERSION_FILE_PATH=/opt/deeplearning/metadata/version
           WORKSPACE_PATH=/opt/deeplearning/workspace

     active environment : base
    active env location : /opt/conda
            shell level : 1
       user config file : /home/mona/.condarc
 populated config files : /opt/conda/.condarc
                          /home/mona/.condarc
          conda version : 4.9.2
    conda-build version : not installed
         python version : 3.7.8.final.0
       virtual packages : __cuda=11.0=0
                          __glibc=2.28=0
                          __unix=0=0
                          __archspec=1=x86_64
       base environment : /opt/conda  (writable)
           channel URLs : https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /opt/conda/pkgs
                          /home/mona/.conda/pkgs
       envs directories : /opt/conda/envs
                          /home/mona/.conda/envs
               platform : linux-64
             user-agent : conda/4.9.2 requests/2.24.0 CPython/3.7.8 Linux/4.19.0-13-cloud-amd64 debian/10 glibc/2.28
                UID:GID : 1016:1017
             netrc file : None
           offline mode : False


An unexpected error has occurred. Conda has prepared the above report.

Upload successful.

这是我用来创建 conda 环境的 repo 中的 environment.yml 文件:

name: kinetics
channels: !!python/tuple
- !!python/unicode
  'defaults'
dependencies:
- joblib=0.9.4=py27_0
- menpo::ffmpeg=3.1.3=0
- mkl=2017.0.1=0
- numpy=1.12.1=py27_0
- openssl=1.0.2k=1
- pandas=0.19.2=np112py27_1
- pip=9.0.1=py27_1
- python=2.7.13=0
- python-dateutil=2.6.0=py27_0
- pytz=2017.2=py27_0
- readline=6.2=2
- setuptools=27.2.0=py27_0
- six=1.10.0=py27_0
- sqlite=3.13.0=0
- tk=8.5.18=0
- wheel=0.29.0=py27_0
- zlib=1.2.8=3
- pip:
  - decorator==4.0.11
  - olefile==0.44
  - youtube-dl==2017.6.5
prefix: /home/cabaf/.conda/envs/kinetics

【问题讨论】:

    标签: python yaml conda ruamel.yaml


    【解决方案1】:

    environment.yml 似乎是在 conda 使用 yaml.load 的时候编写的,但它是 has since switched to yaml.safe_load

    1.1.1 (2019-03-22)

    使用 yaml.safe_load 而不是 yaml.load 删除 yaml 加载警告。 修复 include 为空时 NoneType object is not iterable 的错误。

    您可以尝试从environment.yml 中删除!!python/tuple(还有!!python/unicode,它不会做任何事情),但不清楚为什么它首先存在,它可能会给您带来另一个错误。

    !!python/tuple 的作用在于它指示 YAML 将以下序列不是作为列表加载,而是作为元组加载。这样做的一个原因是当加载的值将用于散列数据结构(dict 或 set)时,因为元组是可散列的,而列表不是。然而,这通常是在 YAML 文件中已经使用了一个映射的值时完成的,这里不是这种情况。

    您收到错误的原因是因为yaml.safe_load 使用了安全加载程序,它不像旧的“危险”加载程序那样调用任意构造函数(因为这是一个安全问题)。因此,您不能使用它加载元组。

    【讨论】:

    • 另外,由于 YAML 已有 4 年历史,他们需要添加 free 频道(在 defaults 之后)。
    【解决方案2】:

    我遇到了同样的问题。删除!!python/tuple!!python/unicode 不一定能解决问题。无需在 conda 环境中运行它。我 pip 安装了 ActivityNet/Crawler/Kinetics/download.py 顶部列出的所有软件包,使用 apt -y update &amp;&amp; apt -y install ffmpeg 下载了 ffmpeg,然后运行了 python download.py ./data/kinetics-400_train.csv ./DirName,这对我有用(我还通过在 download.py 中添加 os.remove(output_filename) 来编辑代码ffmpeg 抛出错误)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 2017-11-30
      • 1970-01-01
      • 2011-06-26
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多