Я использовал setuptools для этого, иногда в сочетании с Ant для более сложных вещей или для интеграции с другими сборками. В целом, это хорошо сработало для меня, но я слышал, что некоторые люди из #python (freenode) жалуются на в целом низкое качество исходного кода для этого пакета и рекомендуют стандартную distutils .
Одна вещь, на которую стоит обратить особое внимание, если вы привыкли к Java (как я), это то, что python не поддерживает разделенные пакеты. То есть вы не можете поместить site.db в src / site / db, site.view в src2 / site / view, поместить src и src2 в PYTHONPATH и ожидать, что все будет работать. Это вызвало у меня большие головные боли с инструментами сборки, это работало немного спорадически:)
Вы не можете. Лучше всего изменить свою карту, чтобы использовать enum.name () в качестве ключа:
HashMap<String, Long> map = new HashMap<String, Long>();
map.put(MyEnum.One.name, 1L);
map.addObject( "map", map);
Ваш первый подход будет работать тогда:
${map['One']} // works now
Или вы можете написать собственную функцию EL, чтобы сделать это за вас, если вы не можете / не хочу менять карту.