解决安装PyMuPDF(也被称为fitz库)的问题(可成功安装且使用)
- 安装方法:
- 一些安装时报错的原因解析:
- 报错1:
- 报错2:
- 报错3-无效的分发包警告:
- 报错4:
- 使用实例
在使用PyMuPDF 发现 直接pip install PyMuPDF
会安装失败或者安装后无法使用
安装方法:
1.在https://pypi.org/project/PyMuPDF/#files 查找到适合自己电脑python版本的.whl文件
2.下载.whl文件在当前项目目录下,以PyMuPDF-1.23.26-cp310-none-win_amd64.whl
为例
3,在终端命令行输入 pip install PyMuPDF-1.23.26-cp310-none-win_amd64.whl
即可
在这之前,需要把安装错误的卸载掉
一些安装时报错的原因解析:
报错1:
pip install PyMuPDF-1.23.26-cp312-none-win_amd64.whl ERROR:
PyMuPDF-1.23.26-cp312-none-win_amd64.whl is not a supported wheel on this platform.
错误信息表明 PyMuPDF-1.23.26-cp312-none-win_amd64.whl
不是一个在您当前平台上受支持的 wheel 文件。这通常是因为 wheel 文件是为特定的 Python 版本和操作系统构建的。cp312 表示这个 wheel 文件是为 Python 3.12 版本构建的,而 win_amd64 表示它是为 Windows 64 位系统构建的。要选择适合自己的版本
报错2:
pip 版本过旧:有时候,较旧的 pip 版本可能无法正确识别或安装某些 wheel 文件。请尝试更新 pip 到最新版本:
python -m pip install --upgrade pip
报错3-无效的分发包警告:
WARNING: Ignoring invalid distribution -illow
(c:\users\zhuang\pycharmprojects\pythonproject2\venv\lib\site-packages)
WARNING: Ignoring invalid distribution -atplotlib
(c:\users\zhuang\pycharmprojects\pythonproject2\venv\lib\site-packages)
这些警告表明在您的虚拟环境site-packages目录中,存在某些名称不正确的分发包。可能是在安装或升级包时出现了问题,导致包的元数据受损。您可以尝试删除这些损坏的包并重新安装它们。
进入c:\users\zhuang\pycharmprojects\pythonproject2\venv\lib\site-packages
找到相关的包,删除以~为开头的相关文件夹即可
报错4:
Installing collected packages: PyMuPDFb, PyMuPDF Successfully
installed PyMuPDF-1.23.26 PyMuPDFb-1.23.22WARNING: You are using pip version 21.3.1; however, version 24.0 is available.
在安装过程中,pip似乎又尝试从缓存中安装了一个名为 PyMuPDFb 的包,并且成功安装了 PyMuPDF 和 PyMuPDFb 两个包。这可能是因为您有一个名为 PyMuPDFb 的依赖项在您的 requirements.txt 文件中或者是由其他某个过程触发的
如果 PyMuPDFb 不是一个您需要的包,您可能想要卸载它以避免潜在的冲突。您可以使用以下命令来卸载它:pip uninstall PyMuPDFb
使用实例
使用PyMuPDF(也被称为fitz库)来获取PDF文献的标题通常涉及读取PDF的元数据。PDF文档的元数据可以包含诸如标题、作者、创建日期等信息。以下是一个基本的示例,
import fitz # PyMuPDF的别名 # 打开PDF文件
pdf_path = 'path_to_your_document.pdf' # 替换为你的PDF文件路径
doc = fitz.open(pdf_path) # 获取PDF的元数据字典
metadata = doc.metadata # 尝试从元数据字典中获取标题
title = metadata.get('title') if title: print(f"PDF标题: {title}")
else: print("PDF标题未找到。") # 关闭文档
doc.close()