我在这里和其他地方找到了一些解决办法,但都没有奏效。上下文:我正在尝试让pdf2txt在我的Pop!_OS 22.04LTS系统上运行。我使用的是Python3.10.6,没有其他版本。命令行声明它需要python3-pdfminer
才能工作,这是我用apt安装的。输出声明没有名为“pdf矿化. that _level”的模块。这个注释这里指出,它是pdfminer.six的一部分,它可以使用pip安装,如果它在虚拟环境中,可以使用破折号而不是点。
$ python3 -m pip install pdfminer.six
已满足要求的国家。当然,我还切换到了一个虚拟环境,并在那里安装了它:
$ pip install pdfminer-six
在这两种情况下运行pdf2txt
都会导致相同的错误,即
File "/usr/bin/pdf2txt", line 9, in <module>
import pdfminer.high_level
ModuleNotFoundError: No module named 'pdfminer.high_level'
然后,我尝试卸载和重新安装pdfminer.six
,首先在系统宽版本上。python3 -m pip uninstall pdfminer.six
(或者仅仅是pip3
)是不允许的,所以我做出了错误的判断并使用了sudo。现在重新安装显示:
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: pdfminer.six in /usr/lib/python3/dist-packages (-VERSION-)
因此,我不确定它是否安装妥当。所以我试着在没有问题的虚拟世界里。但同样的错误依然存在。
我重新安装了python3-pdfminer
,但没有成功。
在虚拟环境中,我发现:
./lib/python3.10/site-packages/pdfminer/high_level.py
./lib/python3.10/site-packages/pdfminer/__pycache__/high_level.cpython-310.pyc
然后,我创建了一个导入pdfminer.high_level
并运行它的测试Python文件,没有问题。然后,我在虚拟环境之外也做了同样的事情。pdfminer
是正确导入的,但不能导入pdfminer.high_level
。所以我发现了以下几点:
pdfminer.six
时,它会在/usr/local/lib/python3.10/dist-packages
中查找并移除它。pdfminer.six
时,它在/usr/lib/python3/dist-packages
中显示。在这里,出现了high_level
包。但是系统总是在/usr/local/lib/python3.10/dist-packages
中查找,所以永远找不到包。所以,我想我找到了问题的原因。在虚拟环境中运行pdf2txt
不起作用,因为它仍然是/usr/bin
中的一个文件,它将寻找系统范围的版本。我假设我可以更新一个指向/usr/lib/python3/dist-packages
的系统环境路径,并像这样解决它(pdf2txt
实际上不是二进制的,所以我可以附加到sys.path
)。但为何会出现这样的差异呢?怎样才是正确的处理方法呢?毕竟,有些软件包安装在不同的位置是有原因的。
非常感谢。
编辑:添加到sys.path不工作,但添加到PYTHONPATH。不确定这是否是今后我应该注意的事情,或者仅仅是安装在/usr/bin中的Python可执行文件的结果,从而使使用虚拟环境的想法变得混乱。
发布于 2022-10-17 10:28:25
有时,当您的工作域中有相同的名称文件时,会发生此问题。所以,请先检查一下,比如你是否有一个文件名"pdfminer.py“。如果不是这样的话,那么我通常尝试使用之前版本的lib。您可以尝试使用
pip install pdfminer.six==20220506
https://stackoverflow.com/questions/74095754
复制相似问题