2011-10-30 30 views
11

導入從文件夾中的一類我有這樣在另一個層面

/ 
/crawl.py 
/crawl/__init__.py 
/crawl/john.py 
/tests/test_john.py 

Python應用程序是什麼,我試圖做的,是運行單元測試test_john.py這需要使用john.py但它在另一個文件夾。

在我tests/test_john.py我得到這個當我運行它

Traceback (most recent call last): 
    File "test_john.py", line 2, in <module> 
    from john import John 
ImportError: No module named john 

所以,我怎麼能導入一個類,從爬行文件夾....

+0

你可以嘗試'從crawl.john導入John'或者嘗試'從..crawl.john導入John'(參考http://stackoverflow.com/questions/1054271/how-to-import-a-python- class-that-in-a-directory-above) –

回答

11

如果你的根文件夾是在您的PYTHONPATH和你讓一個導入的包如下:

/__init__.py 
/crawl.py 
/crawl/__init__.py 
/crawl/john.py 
/tests/__init__.py 
/tests/test_john.py 

你可以這樣做:

from crawl.john import John 

from ..crawl.john import John 
+0

似乎根文件夾不在我的python路徑中。我認爲它可能會將CWD添加到pythonpath,但不會。最好的方法來做到這一點? – Wizzard

+0

取決於您的配置。在Windows中,對於我的包和庫,我只需使用文件夾的名稱在site-packages中添加一個site.pth文件。 – joaquin

2

如果您的操作系統支持的話,把一個符號鏈接../crawltest目錄,然後使用from crawl.john import John

相關問題