pydoc — 文件生成器和線上幫助系統

原始碼: Lib/pydoc.py


pydoc 模組自動從 Python 模組生成文件。該文件可以以文字頁面的形式在控制檯上呈現,也可以提供給 Web 瀏覽器,或儲存為 HTML 檔案。

對於模組、類、函式和方法,顯示的文件來源於物件的文件字串(即 __doc__ 屬性),以及其可文件成員的文件字串(遞迴)。如果沒有文件字串,pydoc 會嘗試從原始碼檔案中類、函式或方法定義上方的註釋行塊,或模組的頂部獲取描述(請參閱 inspect.getcomments())。

內建函式 help() 呼叫互動式直譯器中的線上幫助系統,該系統使用 pydoc 在控制檯上生成其文字形式的文件。透過在作業系統的命令提示符下以指令碼形式執行 pydoc,也可以在 Python 直譯器外部檢視相同的文字文件。例如,在 shell 提示符下執行

python -m pydoc sys

將顯示關於 sys 模組的文件,其樣式類似於 Unix man 命令顯示的幫助頁。pydoc 的引數可以是函式、模組或包的名稱,也可以是對模組或包中類、方法或函式的點式引用。如果 pydoc 的引數看起來像路徑(即,它包含作業系統的路徑分隔符,例如 Unix 中的斜槓),並且指的是現有的 Python 原始碼檔案,那麼將為該檔案生成文件。

注意

為了查詢物件及其文件,pydoc 會匯入要記錄的模組。因此,模組級別的任何程式碼都會在該場合執行。使用 if __name__ == '__main__': 防護來僅在檔案作為指令碼呼叫時執行程式碼,而不是僅僅被匯入。

當向控制檯列印輸出時,pydoc 會嘗試對輸出進行分頁,以便於閱讀。如果設定了 MANPAGERPAGER 環境變數,則 pydoc 將使用其值作為分頁程式。當兩者都設定時,將使用 MANPAGER

在引數之前指定 -w 標誌,將導致 HTML 文件寫入當前目錄中的檔案,而不是在控制檯上顯示文字。

在引數之前指定 -k 標誌,將以類似於 Unix man 命令的方式,在所有可用模組的概要行中搜索作為引數給定的關鍵字。模組的概要行是其文件字串的第一行。

您還可以使用 pydoc 在本地計算機上啟動 HTTP 伺服器,該伺服器將向訪問的 Web 瀏覽器提供文件。 python -m pydoc -p 1234 將在埠 1234 上啟動 HTTP 伺服器,允許您在首選的 Web 瀏覽器中瀏覽 https://:1234/ 處的文件。將埠號指定為 0 將選擇任意未使用的埠。

python -m pydoc -n <hostname> 將啟動伺服器以偵聽給定的主機名。預設情況下,主機名是 'localhost',但如果您希望從其他機器訪問伺服器,您可能需要更改伺服器響應的主機名。在開發過程中,如果您想從容器內執行 pydoc,這將特別有用。

python -m pydoc -b 將啟動伺服器並額外開啟一個 Web 瀏覽器到模組索引頁。每個服務頁面頂部都有一個導航欄,您可以在其中 獲取 關於單個專案的幫助,搜尋 所有模組的概要行中帶有關鍵字的模組,並轉到 模組索引主題關鍵字 頁面。

pydoc 生成文件時,它使用當前的環境和路徑來定位模組。因此,呼叫 pydoc spam 所記錄的模組版本,與您啟動 Python 直譯器並鍵入 import spam 時獲得的模組版本完全相同。

核心模組的模組文件假定位於 https://docs.python.club.tw/X.Y/library/ 中,其中 XY 是 Python 直譯器的主版本號和次版本號。可以透過將 PYTHONDOCS 環境變數設定為不同的 URL 或包含庫參考手冊頁面的本地目錄來覆蓋此設定。

在 3.2 版本中更改: 添加了 -b 選項。

在 3.3 版本中更改: 刪除了 -g 命令列選項。

在 3.4 版本中更改: pydoc 現在使用 inspect.signature() 而不是 inspect.getfullargspec() 來從可呼叫物件中提取簽名信息。

在 3.7 版本中更改: 添加了 -n 選項。