debugging 如何才能在相同的版本号下解开看似不同的Python模块呢?

ymdaylpp  于 2023-01-31  发布在  Python
关注(0)|答案(1)|浏览(122)

我最近更新了PyMuPDF/fitz,因此更新了我的代码,使用它来更新我对fitz方法的使用,以匹配更新后的命名约定(请参见PyMuPDF > Deprecated Names)。
问题:当我调用一个我写的函数来使用fitz的Page.get_text()时,它有时作为一个属性以一个过时的名称存在,有时以一个更新的名称存在。无论哪种方式调用它,它都被导入到同一个脚本中,但是在一个版本中,第二个脚本导入导入fitz的脚本(通过from fitz import fitz)。
我如何能够了解这些不同的属性集是在哪里引入的?
到目前为止为解开和调试所采取的步骤:我确认了PyMuPDF的版本在两种情况下是相同的via this StackOverflow answerprint(pkg_resources.get_distribution('PyMuPDF').version) =〉1.21.0
我检查了对象的属性:print(dir(page))
这是一个基于我用来调用函数的脚本的一致模式。#1 w/ getText(已弃用):screenshot showing version number 1.21.0 and getText as an attribute

2 w/获取文本:screenshot showing version number 1.21.0 and get_text as an attribute

当前解决方案:

for page in doc:
        try:
            text += page.get_text()
        except AttributeError:
            text += page.getText()
xggvc2p6

xggvc2p61#

有几种方法可以处理名称弃用的情况:
1.您可以在导入后立即执行fitz.restore_aliases()来启用旧名称。这将使旧名称再次可用(但也保留新名称)。
1.你可以执行我们提供的一个实用程序。它可以作为参数(或单个Python文件)被指定文件夹。它将遍历源代码并用新文件名替换旧文件名。你也可以请求备份Python文件。文件夹将被递归处理。

相关问题