streamlit: в вашей системе установлена неподдерживаемая версия sqlite3. Chroma требует sqlite3 >= 3.35.0
Ранее я развернул приложение в Streamlit Cloud , которое использовалоchromadb
.
Раньше приложение работало нормально. Однако сегодня я столкнулся с новой ошибкой (как указано в заголовке), и приложение перестало работать.
Я попытался устранить неполадки, используя решения с форума Streamlit , и последовательно выполнил следующие шаги:
- Обновил файл, добавив
pysqlite3-binary
. - Добавлены следующие три строки кода вверху
app.py
:
__import__('pysqlite3')
import sys
sys.modules['sqlite3'] = sys.modules.pop('pysqlite3')
После перезагрузки приложения я обнаружил новую ошибку:
ModuleNotFoundError: No module named 'pysqlite3'
Traceback:
File "/home/adminuser/venv/lib/python3.9/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 552, in _run_script
exec(code, module.__dict__)
File "/mount/src/docgpt-streamlit/app.py", line 2, in <module>
import pysqlite3
Впоследствии я попытался добавитьpysqlite3
снова, но ошибка не исчезла.
Согласно журналам приложения управления , я заметил, что Streamlit не выполнил действие повторной установки .
Может ли это быть причиной ошибки pysqlite? Если да, то как я могу правильно включить приложение Streamlit для автоматической установки pip из-за моего обновленногоrequirements.txt
?
2 ответа
Теперь я решил эту проблему.
Приложениеstreamlit не будет переустанавливать модуль даже после перезагрузки .
Поэтому я развертываю приложение:
- Удалить приложение.
- Обновить новое приложение.
Затем модуль будет переустановлен.
Я столкнулся с чем-то подобным не в Streamlit Cloud, а в докер-контейнере. Я подключился по SSH, и хотя моя версия Python была в порядке, по какой-то причине на ней работал более старый sqlite:
Python 3.11.3
>>> import sqlite3
>>> sqlite3.version
'2.6.0'
Оказывается, я использовал более старую версию Debian (яблочко), против которой не советует документ по устранению неполадок Chroma , поэтому я увеличил изображение доpython:3.11.5-bookworm
и это решило проблему.