2014-01-09 4 views
9

У меня есть структура каталогов для моего приложения python, где в основной папке у меня есть папка, называемая обработчиками, и в этом файле у меня есть base.py, на который должны наследоваться все обработчики. У меня также есть папка, называемая пользователями, которая содержит все обработчики, относящиеся к пользователям.Python Imports From The Directory Выше

\main 
     \handlers 
     base.py 
     __init__.py 
     \users 
       __init__.py 
       authenticated.py 
       logout.py 

Моя проблема заключается в том, что я не могу импортировать базу в любой файл в папке пользователя, но может импортировать из папки пользователей. Я знаю, что я должен сделать что-то вроде сильфона

from ..handlers import *  

Но это не работает по какой-то причине все, что я пытаюсь сделать, это импорт base.py в файлы в каталоге пользователей и других directorys я добавить в более позднее Дата.

+0

Не могли бы вы пояснить, что означает «Я не могу импортировать базу в любой файл в папке пользователя, но может импортировать из папки пользователя»? Можете ли вы также уточнить, что означает «по какой-то причине»? См. Http://stackoverflow.com/questions/4826955/import-from-different-directories-in-python Помогает ли это? – darthbith

+0

У меня есть основной файл, который я могу импортировать из файла пользователя с помощью 'from handlers.users import *', но вам нужно импортировать base.py в файлы в папке users. – bobthemac

+0

Где находится основной файл? Также кажется, что вы не показали нам всю соответствующую структуру каталогов ... Возможно, я не понимаю вашего описания, если это так, извините. Не могли бы вы объяснить причину, по которой это не работает? То есть код ошибки или stacktrace ... – darthbith

ответ

9
import sys 
sys.path.append('/your/dir/goes/here') 
from base import foo 

Что-то вроде этого должно позволить вам импортировать материал из любой выбранной вами директории.

+0

может захотеть вставить его в начале пути, а не в конец, но да +1 –

+0

Это не работало, все еще получая модуль с именем error. На самом деле я не должен этого делать, так как я не уверен, совместим ли он с движком Google, который работает. – bobthemac

+0

Примечание. Вы можете использовать относительные пути (например, './ 'и' '../'') с этим методом в дополнение к абсолютным путям (например, ''/home/username/code'') –

1

Чтобы включить относительный импорт, добавьте main/__init__.py, чтобы сделать каталог main в пакет Python. Родительский каталог main должен быть в sys.path.