Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ruamel_yaml.constructor.ConstructorError: could not determine a constructor for the tag 'tag:yaml.org,2002:python/tuple' in "<unicode string>"

I am trying to download the Kinetics-600 dataset for activity recognition and for that I am following the instructions in this repo: https://github.com/activitynet/ActivityNet

However, at the step conda env create -f environment.yml I get this error:

ruamel_yaml.constructor.ConstructorError: could not determine a constructor for the tag 'tag:yaml.org,2002:python/tuple' in "", line 2, column 11: channels: !!python/tuple

How should I fix this error?

A full report of the error is:

(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.

Here is the environment.yml file in the repo that I using to create the conda environment:

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
like image 631
Mona Jalal Avatar asked Mar 13 '21 00:03

Mona Jalal


2 Answers

It seems that the environment.yml was written at a time when conda used yaml.load but it has since switched to yaml.safe_load:

1.1.1 (2019-03-22)

Remove yaml load warnings by using yaml.safe_load instead of yaml.load. Fix NoneType object is not iterable error when includes is empty.

You can try to remove !!python/tuple (and also !!python/unicode, that doesn't do anything) from the environment.yml however it is unclear why it is there in the first place, it may give you another error.

What !!python/tuple does it that it instructs YAML to load the following sequence not as list, but as tuple. One reason why one would do that is when the loaded value will be used in a hashed data structure (dict or set), since tuples are hashable while lists aren't. However that is usually done when the value is already used an a mapping within the YAML file, which is not the case here.

The reason why you get the error is because yaml.safe_load uses the safe loader, which does not, like the old „dangerous“ loader, call arbitrary constructors (as that is a security problem). Therefore, you cannot load tuples with it.

like image 107
flyx Avatar answered Nov 03 '22 21:11

flyx


I ran into the same problem. Removing !!python/tuple and !!python/unicode does not necessarily fix the problem. There's no need to run it in a conda environment. I pip installed all the packages that are listed in the top of ActivityNet/Crawler/Kinetics/download.py, downloaded ffmpeg using apt -y update && apt -y install ffmpeg, and ran python download.py ./data/kinetics-400_train.csv ./DirName and that worked for me (I also edited the code by adding os.remove(output_filename) in download.py when ffmpeg throws an error).

like image 37
zdgager Avatar answered Nov 03 '22 19:11

zdgager