2016-12-13 5 views
0

Итак, я хочу ввести ранее созданные классы в мой текущий проект Python.Включить несколько модулей в проект PyDev

Для этого я создал папку с именем lib и создаю в ней один файл __init__.py. Моя файловая структура выглядит следующим образом

project_folder 
    lib 
     class1_folder 
      class1.py 
     class2_folder 
      class2.py 
    _init_.py 
    project_script.py 

В файле __init__.py находится в главной папке проекта, у меня есть 2 строки кода.

from class1_folder import class1 
from class2_folder import class2 

Я хочу, чтобы иметь возможность использовать классы, которые я осуществил в моем project_script.py. Как я могу назвать их, если они вложены так глубоко? В project_script, я следующий from lib.class1_folder.class1 import * Но я получаю ImportError: No module named class1_folder

ответ

0

Вам необходимо добавить файл __init__.py в каждую папку, которую следует рассматривать как пакет (для вашего примера они должны быть добавлены к class1_folder и class2_folder).

0

То, что вы пытаетесь сделать, это импортировать файл class1.py, говоря импорта Class1, что вы на самом деле нужно сделать, это импортировать класс из внутри файл class1.py (могу ли я рекомендовать переименование файлов, они немного запутывают :)). Так, скажем, к примеру, что ваши классы называются Dog и Cat (Просто чтобы использовать что-то совершенно другое, чтобы избежать путаницы), вам нужно будет использовать:

from class1 import Dog 
from class2 import Cat 

Просто имейте в виду, хотя, выше работает только в том случае, если все ваши файлы находятся в одном каталоге, поэтому я бы рекомендовал хранить их в одном каталоге.

Еще одна вещь, если это все еще запутывает, когда я пишу «из класса 1 import Dog», этот класс1 обозначает класс1.py, он просто не имеет расширения файла в конце. Это не означает фактическое имя класса.

+0

Не может быть сделано с папкой lib? Проблема здесь в том, что я хочу создать один унифицированный модуль для использования во многих моих проектах. Я использовал конкретные типы данных и функции ввода-вывода для нужд моей работы. Если у меня есть все эти сценарии в одной папке проекта, тогда весь проект будет очень грязным ... – Jack