2013-06-01 23 views
1

這是我爲我的應用程序工作的文件結構。我的問題是,我無法讓我的test_ctd.py文件看到我的ctd.py文件。來自測試文件的訪問模塊

這裏是我的目錄結構

FileParser 
--Parsers 
----ctd.py 
--tests 
----__init__.py 
----test_ctd.py 
--parse.py 

我從來沒有使用過的初始化 .py文件,並很努力去了解它,但這裏是我在添加ctd.py是我路上的嘗試。

import sys 
import os.path 
d = os.path.dirname(os.path.dirname(os.path.abspath('../../'))) 

from Parsers import ctd 

此外,我的parse.py文件中沒有任何代碼,但我將使用它來啓動程序。我是否還需要一個init文件,以便我可以從Parsers文件夾中導入文件?

任何有關如何從這個程序結構訪問我的文件的幫助將不勝感激。最終它將在網絡服務器上運行,不知道這是否有所作爲...

謝謝!

回答

1

ParsersFileParser必須包含__init__.py如果你想從ctd.py導入一些東西。請參閱Importing modules in Python and __init__.py

然後,你可以通過做相對進口喜歡from ..Parsers import ctd或通過添加FileParsersys.path和使用from Parsers import ctd導入從你的測試腳本ctd.py

或者,將包含FileParser的目錄添加到sys.path並使用from FileParser.Parsers import ctd

希望有所幫助。

1

__init__.py文件移動到Parsers,並將目錄FileParser作爲絕對路徑添加到您的PYTHONPATH中。例如sys.path.append('full/path/to/FileParser')

1

您需要確保Python實際上正在尋找正確的位置。你可以通過修改你的PYTHONPATH環境變量來包含找到Python包的地方(比如這個目錄)。您還需要一個__init__.py文件,將該目錄標記爲Python包。

或者,廉價的,哈克的方式是通過修改sys.path

import sys 
import os 
sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(__file__)), 'Parsers')) 
import cdt