导入错误:无法从'charset_normalizer.constant'中导入名称为'COMMON_SAFE_ASCII_CHARACTERS'的内容。

22
Traceback (most recent call last):
  File "g:\mydrive\ \pdftotext_pdfminer.py", line 3, in <module>
    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
  File "C:\Users\ \anaconda3\envs\ \lib\site-packages\pdfminer\pdfinterp.py", line 7, in <module> 
    from .cmapdb import CMap
  File "C:\Users\ \anaconda3\envs\ \lib\site-packages\pdfminer\encodingdb.py", line 7, in <module>
    from .psparser import PSLiteral
  File "C:\Users\ \anaconda3\envs\ \lib\site-packages\pdfminer\psparser.py", line 22, in <module>
    from .utils import choplist
  File "C:\Users\ \anaconda3\envs\ \lib\site-packages\pdfminer\utils.py", line 31, in <module>
    import charset_normalizer  # For str encoding detection
  File "C:\Users\ \anaconda3\envs\ \lib\site-packages\charset_normalizer\__init__.py", line 23, in <module>
    from charset_normalizer.api import from_fp, from_path, from_bytes, normalize
  File "C:\Users\ \anaconda3\envs\ \lib\site-packages\charset_normalizer\api.py", line 10, in <module>
    from charset_normalizer.md import mess_ratio
  File "charset_normalizer\md.py", line 5, in <module>
ImportError: cannot import name 'COMMON_SAFE_ASCII_CHARACTERS' from 'charset_normalizer.constant' (C:\Users\ \anaconda3\envs\ \lib\site-packages\charset_normalizer\constant.py)

每当我使用pdfminer时,就会出现这个错误。我也安装了pdfminer-six。

我的代码在两天前还能正常工作。今天我尝试再次运行它,但文件没有进行任何调整。

我猜想可能是pdfminer的问题,但该模块没有更新......

(我正在我的conda环境中运行此代码)

有人知道这个错误是什么意思吗?如何解决?


1
欢迎来到 Stack Overflow。 请参观[tour]以了解 Stack Overflow 的工作原理,并阅读[ask]以了解如何提高问题的质量。 然后,[edit]您的问题,将源代码包含为可由他人测试的工作[mcve]。 - Progman
7个回答

40

当我遇到这种情况时,我使用了:

pip install chardet

简洁、优雅且无瑕疵地完成翻译任务。 - undefined

18

我遇到了同样的问题,只不过是与 aiohttp 有关,而不是 pdfminer。安装 chardet 而不是我现有的(conda)安装的 charset-normalizer 解决了这个错误,但为我创建了其他问题。我的最终解决方案是删除 chardet 并安装当前版本的 charset-normalizer(目前是 3.1.0,而不是 3.0.1)。可以使用以下命令完成:

conda install -c conda-forge charset-normalizer

7
在我的情况下,我有一个conda环境,不知何故我安装了charset-normalizer,可能是通过venv创建2.0.4的方式安装的。 pip列表显示2.04,conda列表显示3.01。
所以我使用以下命令删除charset版本2.04: pip uninstall charset-normalizer 然后按照上述解决方案,我重新使用conda安装:
conda install -c conda-forge charset-normalizer 经验法则:尽可能使用conda软件包-仅在conda存储库中没有可用内容时使用pip。

5
在我的情况下,在Python 3.9上安装transformers(4.29.2)后,我遇到了相同的错误。问题原来是chardet(5.1.0)和charset-normalizer(3.1.0)之间的兼容性问题。
我通过卸载它们两个,并重新安装相同版本的chardet但使用较旧版本的charset-normalizer来解决了这个问题。
pip uninstall chardet 
pip uninstall charset-normalizer
pip install chardet 
pip install charset-normalizer==2.1.0

我在conda上尝试了一个全新的环境,并得到了完全相同的结果!


谢谢,这帮助解决了我在使用MacPorts安装Python和软件包时遇到的问题。在我的情况下,我只是安装了而没有指定版本号。我想我实际上是用最新版本覆盖了MacPorts正在安装的软件包... - undefined
我的aiohttp版本是3.8.1,它报了一个类似的ImportError错误("无法从'charset_normalizer.utils'导入'is_arabic'"),指定charset-normalizer==2.1.0解决了这个错误。 - undefined

1
确保安装了所有包的正确版本。在conda env中,这对我有效:
  1. pip uninstall pytorch(直到找不到pytorch为止)
  2. conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
  3. pip install cudatoolkit
  4. pip install chardet

始终优先使用conda,然后再使用pip作为辅助。 - r poon

0

你好。今天(2022年11月24日)我尝试使用pdfplumber包时遇到了同样的问题,这个问题之前我从未遇到过。我不知道为什么会出现这个错误,但在以下链接中找到了一个解决方案: 如何修复AttributeError:部分初始化模块?

简单来说,我使用命令conda env remove --name ds(其中ds是我的环境名称)删除了整个虚拟环境。然后,我创建了一个新的虚拟环境,并通过conda或pip重新安装了我需要的每个软件包。现在它完美地工作了。希望它也能对你有用。

出于好奇,上周我安装了Tensorflow。也许它与pdfplumber产生了某种干扰(不确定)。自上次使用pdfminer以来,你是否安装了任何新软件包?祝你好运!


感谢您的评论!在创建了一个新的Anaconda环境后,我安装了pdfminer.six而不是pdfminer,这样就解决了问题。希望这种方法能够帮助遇到相同问题的人! - Lena.J

-1
请使用下列替代方案。

pip install mmcv-full==1.3.17

请执行此命令安装。

1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接