2017-04-06 44 views
1

假設我有以下結構的項目:有無獅身人面像識別進口類和函數,而不是模塊

mypackage 
├── mypackage 
│ ├── __init__.py 
│ ├── someclass.py 
│ └── somefunction.py 
└── setup.py 

然後,我有__init__.py爲:

from mypackage.someclass import someclass 
from mypackage.somefunction import somefunction 

而且someclass.py爲:

class Someclass: 
... 

and somefunction.py as:

def somefunction: 
... 

這是不可能的「隱藏」從用戶的所以只有mypackage.Someclassmypackage.somefunctionmypackage.someclass.Someclassmypackage.somefunction.somefunction,對不對?

但問題是,獅身人面像實際documentating mypackage.someclass.Someclassmypackage.somefunction.somefunction代替mypackage.Someclassmypackage.somefunction

並且在mypackage.somefunction.somefunction的情況下,如果我導入mypackage,這是非常糟糕的,因此無法訪問。

那麼,有可能有獅身人面像文件mypackage.Someclassmypackage.somefunction?根據我在其他答案中讀到的內容,可以通過編輯__module__或使用autoclass來完成,但我目前無法完成此操作。

+1

這看起來類似於http://stackoverflow.com/q/15115514/407651 – mzjn

+1

@mzjn是的!我搜索了很多,但不記得發現這個問題,可能是因爲標題不包含'sphinx'。答案在那裏工作的很好,根據https://meta.stackexchange.com/questions/10841/how-should-duplicate-questions-be-handled我將投票這一關閉。 –

回答

1

使用autoclass,如Sphinx文檔sphinx.ext.autodoc – Include documentation from docstrings中所述。

爲了使autoclass(和其他autodoc功能)正常工作,模塊必須是可導入的。

autodoc將記錄您的模塊的API,並且您可以添加reStructuredText格式的docstrings作爲敘述文檔來解釋使用情況。

在您的軟件包目錄旁邊有一個docs目錄是個好主意。

mypackage 
├── docs 
│ ├── conf.py 
│ ├── other sphinx stuff 
│ └── index.rst 
├── mypackage 
│ ├── __init__.py 
│ ├── someclass.py 
│ └── somefunction.py 
└── setup.py 

組織內docs.rst文件。你的模塊是一個API,所以你可以組織你的.rst文件,像這樣:

mypackage 
├── docs 
    └── api 
     ├── someclass.rst 
     └── somefunction.rst 

在每一個在api目錄中的文件,使用適當的語法。

.. autoclass:: someclass 
.. autofunction:: somefunction 

上述Sphinx文檔中還有幾個選項。

+0

謝謝。我的問題更多的是針對'sphinx-apidoc',對不起,我沒有提到它,但無論如何,我有點放棄它('sphinx-apidoc')並開始手動完成它。 –

+0

[sphinx-apidoc依靠autodoc](http://www.sphinx-doc.org/en/stable/man/sphinx-apidoc.html)。如果你提出你想要的,預期的,並用'sphinx-apidoc'觀察,那麼我可能會引導你前進。 –

+0

別擔心,問題實際上是重複的,但非常感謝您的回答並提供幫助。 –