Ruby не может найти sqlite3 драйвер на окнах

Я не полностью слежу за комментариями, но 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)

10
задан Noah 14 February 2009 в 01:09
поделиться

6 ответов

Проблема в том, что 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

для получения дополнительной информации см. этот веб-сайт

7
ответ дан 3 December 2019 в 20:44
поделиться

Попытайтесь установить sqlite3-рубиновый драгоценный камень:

gem install sqlite3-ruby
3
ответ дан 3 December 2019 в 20:44
поделиться

Что-то подобное недавно произошло со мной, таким образом, я думал, что обновлю свой ответ.

Для ссылки существует файл 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 установлены соответственно. (Системный перезапуск может потребоваться, чтобы распространять изменения полностью.)

3
ответ дан 3 December 2019 в 20:44
поделиться

Попытайтесь идти в страницу загрузки sqlite.org и разбудите заархивированный dll. Затем вставленный, что Ваш c:\windows\system32 папка, которая должна позволить Ruby находить его.

1
ответ дан 3 December 2019 в 20:44
поделиться

Разъясниться, какой драгоценный камень Вы используете? sqlite-ruby или sqlite3-ruby?

Они - часть того же проекта, но различные выпуски. Ключ - это sqlite3 кажется, включает код драйвера.

Я предполагаю, что Вы пытаетесь использовать первое, так как это дает мне ту же ошибку. Если так, попытайтесь переключиться.


Также.. Как литеральный Вы подразумеваете под этим?

но у меня есть dll в моем %PATH %

  1. PATH=...;C:\sqlite\sqlite3.dll
  2. PATH=...;C:\sqlite

Первое попытается найти C:\sqlite\sqlite3.dll\sqlite3.dll, AFAIK.

0
ответ дан 3 December 2019 в 20:44
поделиться

RE Эта ссылка Загрузите SQLITALLLL-3_6_10.ZIP и извлечь в RUBY / BIN!

3
ответ дан 3 December 2019 в 20:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: