Я не полностью слежу за комментариями, но itertools.tee
может дать мне несколько итераций:
In [518]: g1,g2,g3 = itertools.tee((i for i in range(10)), 3)
In [519]: min(g1), max(g2)
Out[519]: (0, 9)
In [520]: a = 0
In [521]: while a<10:
...: a += next(g3) # simulate an infinite sequence
...:
In [522]: a
Out[522]: 10
In [523]: list(g3)
Out[523]: [5, 6, 7, 8, 9]
Или без распаковки:
def foo(g):
a=0
while a<12:
a += next(g)
return (a, list(g))
In [525]: alist = itertools.tee((i for i in range(10)),3)
...: flist = [min, max, foo]
...: for f,a in zip(flist, alist):
...: print(f(a))
0
9
(15, [6, 7, 8, 9])
(используется Py3)
Проблема в том, что sqlite3-ruby 1.2.3 несовместима с ruby 1.9. Это вызвано тем, что ruby 1.9 не использует файлы .dll для библиотек c, а вместо этого использует файлы .so. Кроме того, поскольку sqlite3_api.dll написан против msvcrt-ruby18.dll. Это означает, что он будет поддерживать только Ruby 1.8. *.
Хорошая новость заключается в том, что существует толстая двоичная версия, которая будет поддерживать как ruby 1.8, так и ruby 1.9. Удаление всех предыдущих версий sqlite3-ruby и установка этой. (Возможно, вам придется вручную удалить некоторые версии гема после удаления.) Чтобы установить его, используйте
install sqlite3-ruby --source http://gems.rubyinstaller.org
для получения дополнительной информации см. этот веб-сайт
Попытайтесь установить sqlite3-рубиновый драгоценный камень:
gem install sqlite3-ruby
Что-то подобное недавно произошло со мной, таким образом, я думал, что обновлю свой ответ.
Для ссылки существует файл sqlite3_api.dll, расположенный в каталоге lib драгоценного камня. Также файл sqlite3.dll должен быть достижимым на пути. Они - различные файлы, первое требуется драгоценным камнем к коду интерфейса Ruby to C, в то время как второе содержит фактическую реализацию Sqlite.
Лучше получать второй файл от sqlite веб-сайта и извлекать его к каталогу Ruby\bin (поскольку Вы не должны вручную помещать DLL в окна или windows\system каталоги больше).
Таким образом для ссылочного "sqlite3_api.dll" должен быть в:
Ruby\lib\ruby\gems\1.8\gems\sqlite3-ruby-1.2.3-x86-mswin32\lib
и "sqlite3.dll" должен быть на пути, возможно в:
Ruby\bin
Что касается "драйвера, не найденного" проблема, я предложил бы пробовать легкие вещи сначала и удостовериться, что драгоценные камни установлены правильно, актуальные, и что RUBYLIB и переменные окружения PATH установлены соответственно. (Системный перезапуск может потребоваться, чтобы распространять изменения полностью.)
Попытайтесь идти в страницу загрузки sqlite.org и разбудите заархивированный dll. Затем вставленный, что Ваш c:\windows\system32
папка, которая должна позволить Ruby находить его.
Разъясниться, какой драгоценный камень Вы используете? sqlite-ruby
или sqlite3-ruby
?
Они - часть того же проекта, но различные выпуски. Ключ - это sqlite3
кажется, включает код драйвера.
Я предполагаю, что Вы пытаетесь использовать первое, так как это дает мне ту же ошибку. Если так, попытайтесь переключиться.
Также.. Как литеральный Вы подразумеваете под этим?
но у меня есть dll в моем %PATH %
PATH=...;C:\sqlite\sqlite3.dll
PATH=...;C:\sqlite
Первое попытается найти C:\sqlite\sqlite3.dll\sqlite3.dll
, AFAIK.
RE Эта ссылка Загрузите SQLITALLLL-3_6_10.ZIP и извлечь в RUBY / BIN!