2013-08-21 20 views
0

我已經寫了一個名爲myFunction的小函數,存儲在function.py中,我想在conf.py文件中調用它。這個函數在測試python文件中調用時工作正常,所以我似乎在導入這個文件中的模塊時會遇到問題。如何在Sphinx的conf.py文件中使用python函數

的設置是這樣的:

DocumentSourceFolder/sourcefile.txt

DocumentSourceFolder/conf.py

DocumentSourceFolder/function.py

在conf.py我已經添加了以下:

import function

variable = function.myFunction()

(其中變量是conf.py文件中已存在的內容)。

當這個文件上運行的獅身人面像,不過,我收到錯誤:

ImportError: No module named function

任何想法?

感謝

回答

0

事實證明,在conf.py文件中導入python模塊時,Sphinx有點挑剔。爲了避免錯誤,你需要做2步:

1) 添加到您conf.py文件

import sys, os 
sys.path.append(os.path.relpath('relative/path/to/folder/containing/module')) 

這意味着獅身人面像現在看起來這裏擴展模塊。然後,您必須將模塊名稱添加到extensions = [...]列表中。

2) 添加到您模塊以下:

def setup(app): 
    return 

這個「設置()函數」的獅身人面像接受你的模塊確實是一個擴展模塊是必需的。

完成!

+2

你可以在conf.py中導入你喜歡的任何模塊(只要它在'sys.path'中)。它不一定是帶有'setup()'功能的擴展模塊。 – mzjn

+0

在沒有setup()函數的情況下嘗試運行Sphinx時會導致錯誤 – user1488804

+1

如果您只想從conf.py導入模塊,請確保它可以通過sys.path找到。如果該模塊應該是一個Sphinx擴展模塊,則還必須將其添加到擴展配置變量中,幷包含一個'setup()'函數。 – mzjn

1

嘗試:

from function import function 

隨着:

import function 

的Python嘗試導入的模塊;你的文件顯然不是。 請參閱http://docs.python.org/2/tutorial/modules.html#more-on-modules中的小節

+0

感謝您的回答。這隻會給出和以前一樣的錯誤。解決方案實際上是與獅身人面像。 – user1488804

+0

我在下面添加了我的解決方案。 – user1488804

+1

「* Python試圖導入一個模塊;你的文件顯然不是*」?你爲什麼這麼說?當然這是一個模塊。[模塊是一個包含Python定義和語句的文件](http://docs.python.org/2/tutorial/modules.html#more-on-modules)。 – mzjn

相關問題