Mon*_*lal 8 python yaml conda ruamel.yaml
我正在尝试下载 Kinetics-600 数据集进行活动识别,为此我遵循此存储库中的说明: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.
Run Code Online (Sandbox Code Playgroud)
这是environment.yml我用来创建 conda 环境的存储库中的文件:
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
Run Code Online (Sandbox Code Playgroud)
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:
\n\n1.1.1 (2019-03-22)
\nRemove yaml load warnings by using yaml.safe_load instead of yaml.load.\nFix NoneType object is not iterable error when includes is empty.
\n
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.
出现错误的原因是因为yaml.safe_load使用了安全加载程序,它不会像旧的 \xe2\x80\x9edangerous\xe2\x80\x9c 加载程序那样调用任意构造函数(因为这是一个安全问题)。因此,您不能用它加载元组。