Как установить библиотеку libolm на Windows? У меня возникли проблемы с запуском matrix-no[e2e], так как он зависит от python-olm, который, в свою очередь, требует libolm. Как можно это исправить?

Уважаемые друзья, мне нужна помощь. Я установил библиотеку libolm, следуя инструкциям, представленным ниже: 

<blockquote>Обратите внимание, что это устанавливает nio без поддержки сквозного шифрования. Для поддержки e2ee требуется python-olm, который требует библиотеку libolm на C (версия 3.x). На Debian и Ubuntu можно установить пакет libolm-dev с помощью apt-get. На Fedora можно установить пакет libolm-devel с помощью dnf. На MacOS можно установить пакет libolm с помощью brew. Убедитесь, что установлена версия 3.<br/>
После установки libolm можно установить версию nio с поддержкой e2ee с помощью pip:<br/>
$ pip install matrix-nio[e2e]</blockquote>

Я выполнил следующие команды для установки libolm:

<blockquote>
git clone <a href="https://gitlab.matrix.org/matrix-org/olm.git" rel="nofollow">https://gitlab.matrix.org/matrix-org/olm.git</a><br/>
cd olm<br/>
mkdir build<br/>
cmake . -Bbuild<br/>
cmake --build build<br/>
cd build/tests<br/>
ctest .<br/>
</blockquote>

Все тесты завершились без ошибок. Затем я установил следующую библиотеку:

```
pip install python-olm
pip install matrix-nio[e2e]
```

Обе установки прошли успешно, но при попытке запустить код с импортом библиотек, например, `import olm` или `import nio`, я получаю следующую ошибку:

<blockquote>
import olm<br/>
  File "C:\Users\Nelson\AppData\Local\Programs\Python\Python38\lib\site-packages\olm\__init__.py", line 24, in <br/>
    from .utility import ed25519_verify, OlmVerifyError, OlmHashError, sha256<br/>
  File "C:\Users\Nelson\AppData\Local\Programs\Python\Python38\lib\site-packages\olm\utility.py", line 37, in <br/>
    from _libolm import ffi, lib  # type: ignore<br/>
ImportError: DLL load failed while importing _libolm: Не найден указанный модуль.
</blockquote>

Можете подсказать, нужно ли что-то делать с собранной библиотекой? Не игнорируйте, пожалуйста.
  • 21 октября 2024 г. 5:22
Ответы на вопрос 2
Ваши шаги по установке библиотеки `libolm` и `python-olm` кажутся корректными, однако ошибка, которую вы получаете, указывает на то, что Python не может найти динамическую библиотеку (DLL) `libolm`, необходимую для работы `python-olm`.

Вот несколько шагов, которые могут помочь вам исправить эту проблему:

1. **Проверьте наличие созданной библиотеки**:
   Убедитесь, что после сборки `libolm` у вас есть библиотеки в папке сборки. Обычно они находятся в `build` или в подкаталоге вроде `lib`. Вам нужно найти файлы, в названии которых содержится `olm`, и заканчиваются на `.dll`.

2. **Добавьте вашу библиотеку в PATH**:
   Если вы нашли библиотеку `libolm.dll`, вам нужно убедиться, что она доступна для вашей системы. Для этого вы можете:
   - Скопировать `libolm.dll` в одну из папок, уже находящихся в системной переменной PATH (например, в `C:\Windows\System32` или в папку Python, где установлены остальные модули).
   - Или вы можете добавить путь к папке, где находится `libolm.dll`, в переменную среды PATH. Это можно сделать, выполнив следующее:
     - Нажмите `Win + R`, введите `sysdm.cpl` и нажмите Enter.
     - Перейдите на вкладку "Дополнительно", затем нажмите на кнопку "Переменные среды".
     - Найдите переменную `Path` в списке системных переменных, выберите её и нажмите "Изменить".
     - Добавьте путь к папке, содержащей `libolm.dll`, и сохраните изменения.

3. **Перезагрузите терминал или систему**:
   После внесения изменений в PATH, закройте и откройте терминал или даже полностью перезагрузите компьютер, чтобы изменения вступили в силу.

4. **Проверьте совместимость версий**:
   Убедитесь, что версия `libolm`, которую вы использовали, совместима с версией `python-olm`, установленной через pip. Иногда несовпадение версий может вызывать подобные проблемы.

5. **Проверьте, правильно ли Python использует библиотеку**:
   Вы можете попытаться локально установить `libolm` в одноименную папку на уровне проекта и убедиться, что `python-olm` может ее увидеть.

Если после выполнения всех этих шагов ошибка продолжает возникать, дайте мне знать, и я постараюсь помочь вам дальше!
а где у вас в системе лежит готовая библиотека? 
If anyone comes across this issue in Python > 3.8 with Windows, dll's are only loaded from trusted locations https://docs.python.org/3/whatsnew/3.8.html#ctypes This can be fixed by adding the dll path using os.add_dll_directory("PATH_TO_DLL")
Похожие вопросы