2012-09-12 70 views
6

我繼承了一個相當大的代碼庫,我想爲其創建html文檔。由於它是用Python編寫的,我決定使用sphinx,因爲代碼的用戶習慣於用sphinx創建的python文檔的設計和功能。 我使用命令sphinx-apidoc來自動創建第一個文件。我將模塊路徑導入sys.path,以便獅身人面像可以找到代碼。獅身人面像在執行'make html'時運行我的代碼嗎?

到目前爲止這麼好。但是,當我嘗試使用命令make html創建html時,會出現許多回溯,並且代碼庫中的一些示例似乎得到執行。這可能是什麼原因,以及如何防止這種情況發生?

+1

代碼庫中的示例,如'__main__'之後的代碼?或doctests(你知道,在文檔字符串測試)? –

+0

好問題。我猶豫再次運行它。 sphinx-apidoc的確切命令是:'sphinx-apidoc -f -F -o。 ../ src'緊跟'make html'。這會啓動執行文件測試嗎?如果是這樣,我怎麼能阻止它做到這一點? – AME

+1

(1)檢查'__main__'中是否有一些代碼; (2)如果你不使用['doctest'](http://sphinx.pocoo.org/ext/doctest.html)擴展名,你應該定義好。檢查您的配置文件以確保。 –

回答

8

當使用autodoc時,Sphinx會導入記錄的模塊,以便執行所有模塊級代碼。每當你做「製作html」時都會發生這種情況。從這個意義上說,Sphinx不會「運行」你的代碼。

您可能需要以不同的方式組織代碼,以使錯誤消失(將模塊級代碼移到函數中)。有關可能發生的情況的示例,請參見this question

這是我的猜測,但它可能不是整個故事。沒有額外的信息很難說更多。

0
def main(): 

    print('hello world') 

if __name__ == '__main__': 

    main() 

這樣你的代碼將不會運行。

+0

多一點解釋可能有助於OP和其他人 –