use*_*261 63 python typeerror pyyaml plotly google-colaboratory
我正在尝试在 Google Colab 中进行常规导入。
此导入一直有效。
如果我尝试:
import plotly.express as px
Run Code Online (Sandbox Code Playgroud)
或者
import pingouin as pg
Run Code Online (Sandbox Code Playgroud)
我收到错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-19-86e89bd44552> in <module>()
----> 1 import plotly.express as px
9 frames
/usr/local/lib/python3.7/dist-packages/plotly/express/__init__.py in <module>()
13 )
14
---> 15 from ._imshow import imshow
16 from ._chart_types import ( # noqa: F401
17 scatter,
/usr/local/lib/python3.7/dist-packages/plotly/express/_imshow.py in <module>()
9
10 try:
---> 11 import xarray
12
13 xarray_imported = True
/usr/local/lib/python3.7/dist-packages/xarray/__init__.py in <module>()
1 import pkg_resources
2
----> 3 from . import testing, tutorial, ufuncs
4 from .backends.api import (
5 load_dataarray,
/usr/local/lib/python3.7/dist-packages/xarray/tutorial.py in <module>()
11 import numpy as np
12
---> 13 from .backends.api import open_dataset as _open_dataset
14 from .backends.rasterio_ import open_rasterio as _open_rasterio
15 from .core.dataarray import DataArray
/usr/local/lib/python3.7/dist-packages/xarray/backends/__init__.py in <module>()
4 formats. They should not be used directly, but rather through Dataset objects.
5
----> 6 from .cfgrib_ import CfGribDataStore
7 from .common import AbstractDataStore, BackendArray, BackendEntrypoint
8 from .file_manager import CachingFileManager, DummyFileManager, FileManager
/usr/local/lib/python3.7/dist-packages/xarray/backends/cfgrib_.py in <module>()
14 _normalize_path,
15 )
---> 16 from .locks import SerializableLock, ensure_lock
17 from .store import StoreBackendEntrypoint
18
/usr/local/lib/python3.7/dist-packages/xarray/backends/locks.py in <module>()
11
12 try:
---> 13 from dask.distributed import Lock as DistributedLock
14 except ImportError:
15 DistributedLock = None
/usr/local/lib/python3.7/dist-packages/dask/distributed.py in <module>()
1 # flake8: noqa
2 try:
----> 3 from distributed import *
4 except ImportError:
5 msg = (
/usr/local/lib/python3.7/dist-packages/distributed/__init__.py in <module>()
1 from __future__ import print_function, division, absolute_import
2
----> 3 from . import config
4 from dask.config import config
5 from .actor import Actor, ActorFuture
/usr/local/lib/python3.7/dist-packages/distributed/config.py in <module>()
18
19 with open(fn) as f:
---> 20 defaults = yaml.load(f)
21
22 dask.config.update_defaults(defaults)
TypeError: load() missing 1 required positional argument: 'Loader'
Run Code Online (Sandbox Code Playgroud)
我认为这可能是Google Colab或某些已更新的基本实用程序包的问题,但我找不到解决方法。
Boh*_*nko 93
现在,该load()函数需要参数loader=Loader。
如果您的 YAML 文件仅包含简单的 YAML(str、int、lists),请尝试使用yaml.safe_load()而不是yaml.load(). 如果您需要FullLoader,则可以使用yaml.full_load().
从 pyyaml>=5.4 开始,它没有任何已发现的严重漏洞pyyaml status。
来源:https ://stackoverflow.com/a/1774043/13755823
yaml.safe_load() 应始终是首选,除非您明确需要提供的任意对象序列化/反序列化以避免引入任意代码执行的可能性。
更多关于yaml.load(input) 这里。
use*_*261 56
发现问题了。
我正在安装pandas_profiling,这个包更新pyyaml到了 6.0 版本,这与 Google Colab 导入包的当前方式不兼容。
因此,只需恢复到pyyaml5.4.1 版本即可解决问题。
有关详细信息,请查看pyyaml 此处的版本。请参阅GitHub
中的此问题和正式答案
#################################################### ################
要在代码中恢复到pyyaml版本 5.4.1,请在软件包安装末尾添加下一行:
!pip install pyyaml==5.4.1
Run Code Online (Sandbox Code Playgroud)
重要的是把它放在安装的最后,有些安装会改变版本pyyaml。
Ali*_*hir 21
这对我有用
config = yaml.load(ymlfile, Loader=yaml.Loader)
Run Code Online (Sandbox Code Playgroud)
当我们在没有指定 Loader 关键字参数的情况下使用该方法时,会出现Python “TypeError: load() miss 1 requiredpositional argument: 'Loader'” 。yaml.load()
要解决该错误,请改用该yaml.full_load()方法或显式设置Loader关键字 arg。
config = yaml.full_load(ymlfile)
Run Code Online (Sandbox Code Playgroud)
或者
config = yaml.load(ymlfile, Loader=yaml.FullLoader)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
167428 次 |
| 最近记录: |