簡體   English   中英

如何在同一版本號下解開看似不同的導入 Python 模塊?

[英]How can I disentangle seemingly different imported Python modules under the same version number?

我最近更新了 PyMuPDF/fitz 並因此更新了我的代碼,使用它來更新我對 fitz 方法的使用以匹配更新的命名約定(請參閱PyMuPDF > Deprecated Names )。

問題:當我調用 function 時,我寫了使用 fitz 的 Page.get_text() 它有時作為一個屬性存在於已棄用的名稱下,有時在更新的名稱中。 無論哪種方式,它都是在同一個腳本中導入的,但是在一個版本中,第二個腳本導入了導入 fitz 的腳本(通過from fitz import fitz )。

我如何才能了解引入這些不同集合的屬性的位置?

到目前為止為解開和調試所采取的步驟:我通過 StackOverflow 的回答確認了兩種情況下 PyMuPDF 的版本相同: print(pkg_resources.get_distribution('PyMuPDF').version) => 1.21.0

我檢查了 object 的屬性: print(dir(page))

這是一個一致的模式,基於我用來調用我的 function 的腳本。#1 w/getText(已棄用):顯示版本號 1.21.0 和 getText 作為屬性的屏幕截圖

#2 w/ get_text:屏幕截圖顯示版本號 1.21.0 和 get_text 作為屬性

當前解決方案:

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

有幾種方法可以處理名稱棄用的情況:

  1. 您可以通過在導入后立即執行fitz.restore_aliases()來啟用舊名稱。 這將使舊名稱再次可用(但也保留新名稱)。

  2. 您可以執行我們提供的實用程序。 可以將文件夾作為參數(或單個 Python 文件)。 它將遍歷源代碼並用新名稱替換舊名稱。 您還可以請求備份您的 Python 文件。 文件夾將被遞歸處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM