2013-03-05 3 views
12

Я пытаюсь оценить некоторые представления python, которые находятся в отдельных папках для каждого ученика. Для этого существует функция, скажем, f(), которую я хочу запустить. Я понимаю, что если мой текущий путь такой же, как тот, в котором находится файл, я могу просто сделатьИмпорт Python из подпапок

import filename 
filename.f() 

Однако, есть более эффективные способы? Например, предположим, что структура каталогов выглядит следующим образом:

main.py 
student/run_this.py 

Я знаю, что если есть файл «__init__.py» в папке студента, я могу просто набрать

import student.run_this 

Однако, без этого файла это не сработает.

Некоторые подобные вопросы я нашел, были

, но ни один из них не дал особенно удовлетворительные ответы.

+0

Так что же представляет собой проблема с файлом '__init __. Py'? – eazar001

+1

Вы добавляете папку 'student' на свой путь, а затем импортируете' run_this'. Это то, что другие ответы говорят вам делать, что вы пробовали, это не сработало? –

+1

Дело не в том, что это не сработало так сильно, как казалось не изящным. Или, по крайней мере, добавление \ __ init __. Py выглядит довольно неудачным для меня - кажется, безнравственно изменить файловую структуру для доступа к подпапкам. Для изменения пути я читал, что это была плохая практика, но это похоже на разумное решение. – vmkrish

ответ

8

создать __init__.py модуль в папке student, которая должна содержать

from . import * 

Вы можете назвать какие-либо модули из папки студента в его модули родительской папки в

import student.module.py 

Если вы разместите любые другие ошибки вы сталкиваетесь, мы можем помочь дальше.

+1

Как вы думаете, вы могли бы объяснить (или связать меня с материалом), объясняя, почему нужны \ __ init __. Py? Это закончило работу, но я немного смущен тем, что логика дизайна – vmkrish

+0

\ _ \ _ init__.py так же просто, как логика наследования классов в C++ или python. Когда python смотрит на папку, он не включает в себя все доступные в нем модули. Если u задает функции, которые должны выполняться, когда python входит в класс с функцией \ _ \ _ init__, он хорошо понимает. здесь мы просто импортируем необходимые или все модули, когда python встречает папку, используя \ _ \ _ init__. –

+0

Этот ответ является единственным, что я смог найти, чтобы ответить на проблему, которую я получил, благодаря @MathanKumar! –