Pandas 导入错误“导入错误:无法从 'pandas._typing' 导入名称 'DtypeArg'”

Doğ*_*ECİ 4 python import importerror pandas anaconda

当我尝试 import 时pandas,它会引发错误。我无法导入pandas。我重新安装了熊猫,但它一直在抛出同样的错误。

我尝试在本地提示和 jupyter 笔记本中运行它。我认为它可能与 pip 版本冲突,所以我从 pip 中删除了包。目前我只有 conda 版本,但仍然是同样的错误。我能做什么?

 Traceback (most recent call last):
  File "havatahmin.py", line 1, in <module>
    import pandas as pd
  File "C:\Anaconda\envs\ED\lib\site-packages\pandas\__init__.py", line 144, in <module>
    from pandas.io.api import (
  File "C:\Anaconda\envs\ED\lib\site-packages\pandas\io\api.py", line 8, in <module>
    from pandas.io.excel import ExcelFile, ExcelWriter, read_excel
  File "C:\Anaconda\envs\ED\lib\site-packages\pandas\io\excel\__init__.py", line 1, in <module>
    from pandas.io.excel._base import ExcelFile, ExcelWriter, read_excel
  File "C:\Anaconda\envs\ED\lib\site-packages\pandas\io\excel\_base.py", line 33, in <module>
    from pandas.io.parsers import TextParser
  File "C:\Anaconda\envs\ED\lib\site-packages\pandas\io\parsers\__init__.py", line 1, in <module>
    from pandas.io.parsers.readers import (
  File "C:\Anaconda\envs\ED\lib\site-packages\pandas\io\parsers\readers.py", line 17, in <module>
    from pandas._typing import (
ImportError: cannot import name 'DtypeArg' from 'pandas._typing' (C:\Anaconda\envs\ED\lib\site-packages\pandas\_typing.py)
Run Code Online (Sandbox Code Playgroud)

错误

Val*_*the 9

出现此错误的原因有多种。

  • pip install pandas --ignore-installed会破坏 和 之间的 pandas,1.3.0因为1.3.1它不会从 中删除旧文件site-packages,因此会出现导入错误。如果是这种情况,您可以重新安装没有此标志的 pandas。
pip install --force-reinstall pandas
Run Code Online (Sandbox Code Playgroud)
  • 混合 conda 和 pip 也可能会破坏 pandas,如此处所讨论。就此而言,如果您使用 conda,请尝试坚持使用它,然后使用 pip 安装缺少的软件包。有关如何在 Conda 环境中使用 pip 的更多指南。

  • 可以说,Pandas 应该对这种多版本共存具有鲁棒性。对于各种软件包,我已经多次发生这种情况,没有混合安装程序(仅 pip)或使用特殊的安装标志。例如,用户可以在本地(在用户文件夹中)安装自己版本的库,并在使用此文件夹运行的 Docker 容器中安装另一个版本。 (4认同)

mir*_*phd 8

我确认,这是pandas==1.3.1.

一种解决方法是将其降级到某个较早的版本,例如pip install pandas==1.3.0.

可以在20210717我们的 Python (3.8) 启用 CUDA 的容器的构建中测试该解决方法:

docker run -d --rm --name ml-gpu-py38-cuda112-cust -p 8888:8888 -v /home/mir:/home/jovyan mirekphd/ml-gpu-py38-cuda112-cust:20210717 && docker logs -f ml-gpu-py38-cuda112-cust
Run Code Online (Sandbox Code Playgroud)

是否已经在 Github 上向 Pandas 开发人员报告过?

更新:问题仍然存在,因此我在#42506 中为 Pandas 开发人员提供了一个可重现的示例。