首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError: load()缺少一个必需的位置参数: Google Colab中的'Loader‘

TypeError: load()缺少一个必需的位置参数: Google Colab中的'Loader‘
EN

Stack Overflow用户
提问于 2021-10-14 03:41:24
回答 3查看 37.5K关注 0票数 18

我正试图在谷歌Colab中做一个常规的导入。

到目前为止,这个导入是有效的。

如果我尝试:

代码语言:javascript
复制
import plotly.express as px

代码语言:javascript
复制
import pingouin as pg

我得到一个错误:

代码语言:javascript
复制
---------------------------------------------------------------------------
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'

我认为这可能是Google Colab或一些已经更新的基本实用程序包的问题,但我找不到解决方法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-10-14 04:51:41

找到了问题所在。

我正在安装pandas_profiling,这个包将pyyaml更新到了6.0版,这与当前Google Colab导入包的方式不兼容。

因此,只要恢复到pyyaml版本5.4.1就解决了这个问题。

有关更多信息,请查看pyyaml here的版本。

GitHub中查看此问题和正式答案

##################################################################

要在代码中恢复到pyyaml版本5.4.1,请在软件包安装的末尾添加下一行:

代码语言:javascript
复制
!pip install pyyaml==5.4.1

重要的是把它放在安装的最后,有些安装会改变pyyaml的版本。

票数 21
EN

Stack Overflow用户

发布于 2021-10-15 07:47:59

现在,load()函数需要参数loader=Loader

如果您的YAML文件只包含简单的YAML (str、int、list),请尝试使用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) here的信息。

票数 29
EN

Stack Overflow用户

发布于 2022-03-04 11:01:25

要解决TypeError: load()缺少1个必需的位置参数:'Loader‘错误,这里的错误提到您的load()函数是必需的参数loader=Loader。因此您需要使用safe_load()而不是load()。第二个解决方案是pyyaml最新版本6.0与当前Google Colab导入包的方式不兼容。因此,只需将pyyaml版本降级到5.4.1,它与当前Google Colab导入的方式兼容,它将解决您的错误。使用这个命令来降级pyyaml,当我加载texthero包时,我在安装pyyaml版本5.4.1之后得到了这个错误,在我重启google colab之后,我纠正了这个错误

Ans:- !pip安装pyyaml==5.4.1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69564817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档