После некоторого поиска мне удалось программно получить полные пути внешних программ из Eclipse с помощью следующей команды:
new ProcessBuilder("/bin/bash", "-l", "-c", "which mvn")
Флаг -l
(или --login
) является ключом к решение. Согласно справочной странице bash :
Сделать bash действовать так, как если бы он был вызван как оболочка для входа
[...]
[ 119] Когда bash вызывается как интерактивная оболочка входа в систему или как неинтерактивная оболочка с параметром --login, она сначала читает и выполняет команды из файла / etc / profile, если этот файл существует. После прочтения этого файла он ищет ~ / .bash_profile, ~ / .bash_login и ~ / .profile в указанном порядке, а также читает и выполняет команды из первой, которая существует и доступна для чтения.blockquote>
Другими словами, это позволит внешней программе выбрать переменную
PATH
из одного из стандартных местоположений, даже если в самом Eclipse для нее может быть задано другое значение.
Я связался с автором tc, и он сказал мне следующее:
В настоящее время таблица ( тдб) водитель существуют в главной ветви ( единица тесты ) и драйвер fdb Разрабатывается в отдельной ветке.
Я попытался успешно протестировать драйвер таблицы для небольшого теста, скоро планирую попробовать его для больших таблиц.
Единственный другой, о котором я знаю, является ветвлением pytc, но похоже, что они только сделали некоторый рефакторинг и работу документации, так, вероятно, все еще только хешируйте и поддержка B-дерева:
Если это не работает, Вам, вероятно, не повезло. Я думаю, что вся привязка тирана только использует механизм хеша.
Вот реализация поиска табличного движка с использованием PyTyrant:
Я отслеживал (а иногда и улучшал) различные привязки Python для TC более года, поэтому вот обновленный список лучших привязок, соответствующих вашим критериям.
Есть много устаревших и / или неполных альтернатив.
Моя ветка pytc под названием "tc" действительно поддерживает таблицы (TDB) http://github.com/rsms/tc
Базовый пример:
>>> import tc
>>> db = tc.TDB("slab.tdb", tc.TDBOWRITER | tc.TDBOCREAT)
>>> db.put('some key', {'name': 'John Doe', 'age': '45', 'city': u'Internets'})
>>> rec = db.get('some key')
>>> print rec['name']
John Doe
Выполнение запросы:
>>> import tc
>>> db = tc.TDB("slab.tdb", tc.TDBOWRITER | tc.TDBOCREAT)
>>> db.put('torgny', {'name': 'Torgny Korv', 'age': '31', 'colors': 'red,blue,green'})
>>> db.put('rosa', {'name': 'Rosa Flying', 'age': '29', 'colors': 'pink,blue,green'})
>>> db.put('jdoe', {'name': 'John Doe', 'age': '45', 'colors': 'red,green,orange'})
>>> q = db.query()
>>> q.keys()
['torgny', 'rosa', 'jdoe']
>>> q.filter('age', tc.TDBQCNUMGE, '30')
>>> q.keys()
['torgny', 'jdoe']
>>> q.filter('colors', tc.TDBQCSTROR, 'blue')
>>> q.keys()
['torgny']
>>> # new query:
>>> q = db.query()
>>> q.order('name') # Ascending order by default
>>> q.keys()
['jdoe', 'rosa', 'torgny']
>>> q.order(type=tc.TDBQONUMASC, column='age')
>>> q.keys()
['jdoe', 'torgny', 'rosa']
Дополнительные примеры в модульном тесте TDB: http://github.com/rsms/tc/blob/master/lib/tc/test/tdb.py