packageName\
__init__.py
src\
__init__.py
someFile.py
classes\
__init__.py
engine1.py
engine2.py
engine.py
tests\
__init__.py
myTests.py
temp\
Я работаю над ООП с Python, и у меня есть несколько вопросов.Структурирование кода и модулей OOP Python
Я понимаю, что __init__.py
определяет папку как модуль, но я не понимаю, насколько это приносит мне пользу.
Как я могу запустить myTests.py
, если ему нужно импортировать класс из папки packageName/src/classes
?
$ python packageName/tests/myTests.py
Вышеупомянутый вызов - как я предполагаю, что намерен запустить свои тесты. Если структура такая, как я могу импортировать классы?
from ..src.classes.engine1 import *
Я настоятельно рекомендую вам прочитать [Руководство Автостопом Packaging 1.0 - Lay Out Your Project] (http://guide.python-distribute.org/quickstart .html # Компоновка-ваш-проект). Если вы структурируете проект как соответствующий пакет и установите его, вы сможете использовать абсолютный импорт из любой точки системы (например: 'from src.classes.engine1 import something'). Кроме того, я очень рекомендую вам избегать 'import *' операторов ... они могут загрязнять пространство имен вашего модуля и вызывать всевозможные необычные проблемы. – 2013-02-15 23:24:39
Добавление файла '__init __. Py' в папку делает его _package_ других модулей (и/или подпакетов), а не самого модуля. – martineau