2013-06-01 3 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

Parsers и FileParser должно содержать __init__.py, если вы хотите что-то импортировать из ctd.py. См. Importing modules in Python and __init__.py.

Затем, вы можете импортировать ctd.py из ваших тестов сценариев, делая относительный импорт, как from ..Parsers import ctd или путем добавления FileParser к sys.path и используя from Parsers import ctd.

Или добавьте каталог, содержащий 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.