Обычно python находит модули и пакеты через путь python, через переменную sys.path
. Когда buildout
создает сценарии в каталоге bin/
, он добавляется к переменной sys.path
, перечисляя все яйца для данной части.
Чтобы python мог найти ваш модуль ./bar.py
или ваш пакет ./foo
, текущему каталогу также необходима часть пути к python. Я нахожу очень удивительным, что модуль bar.py
найден для bin/bar
, а пакет ./foo
не найден; ясно, что пути Python для обеих частей разные. Вы можете просмотреть верхнюю часть сгенерированных сценариев bin/bar
и bin/foo
, чтобы увидеть, какие пути были добавлены в sys.path
.
В любом случае вы можете вручную добавить дополнительные пути к sys.path
с помощью опции extra-paths
в части zc.recipe.egg
. Любой путь, указанный там, будет в конечном итоге создан в вашем скрипте. Достаточно просто установить ${buildout:directory}
:
[foo]
recipe = zc.recipe.egg
eggs = ${buildout:eggs}
extra-paths = ${buildout:directory}
entry-points = foo=foo:main