Какой распространенный способ создания макета приложения Django с помощью Buildout / djangorecipe? - PullRequest
3 голосов
/ 15 июля 2011

У меня есть приложение Django, которое я настроил с помощью Buildout, выложенное так:

/workspace
  /bin
  /src
    /myproject
      settings.py
      /myapp
         views.py
         ...
  bootstrap.py
  buildout.cfg
  setup.py

Проблема в том, что я хотел бы, чтобы myproject.settings и myapp на пути к питону. Мне нужен myproject.settings на пути, чтобы djangorecipe мог его импортировать. И я бы хотел myapp на пути, чтобы мне не приходилось писать import myproject.myapp все время.

На данный момент у меня есть и /workspace/src, и /workspace/src/myproject в пути Python, но это похоже на хак и практически заставляет меня беспокоиться, если могут возникнуть ситуации, когда import some_module может иметь путанные шаблоны разрешения, потому что две директории, которые являются родительскими и дочерними по отношению друг к другу.

Итак, вопросы:

Есть ли приемлемый способ изложить это?

Действительно ли плохо иметь каталог и один из его подкаталогов в пути?

Ответы [ 2 ]

0 голосов
/ 31 августа 2011

Если ваш buildout.cfg включает в себя develop = . и любое яйцо, определенное вами setup.py, включено в качестве зависимости для вашей сборки / частей, то любой путь кода, который определит ваш setup.py, будет автоматически добавлен в sys.path.Просто убедитесь, что ваш setup.py включает src в качестве каталога кодов.Один из способов сделать это с помощью:

setup(name=...
...
      packages=find_packages('src'),
      package_dir = {'':'src'},
...
0 голосов
/ 05 августа 2011

Нет проблем, на import some_module импортер будет искать в каждой папке, указанной в sys.path для some_module/__init__.py и some_module.py.То же самое для import myproject.some_module, он будет искать модуль myproject, затем попытается найти в нем some_module с тем же алгоритмом.

Я использую ту же структуру проекта.

...