Встроенный python — импорт Paramiko завершается с ошибкой «ImportError: ошибка загрузки DLL при импорте _rust: указанный модуль не найден».

#python #windows #paramiko #embedding

#python #Windows #paramiko #внедрение

Вопрос:

Я хочу внедрить python в приложение на C . Я могу импортировать стандартные модули из библиотек Python, т.е.:

 PyRun_SimpleString("import sys")
 

но когда я пытаюсь импортировать paramiko, происходит сбой,

 PyRun_SimpleString("import paramiko")
 

Обратная трассировка

 Traceback (most recent call last):
File "<string>", line 4, in <module>
File "C:Userschaitanya.rautAppDataLocalProgramsPythonPython38-32libsite-packagesparamiko__init__.py", line 22, in <module>
  from paramiko.transport import SecurityOptions, Transport
File "C:Userschaitanya.rautAppDataLocalProgramsPythonPython38-32libsite-packagesparamikotransport.py", line 89, in <module>
  from paramiko.dsskey import DSSKey
File "C:Userschaitanya.rautAppDataLocalProgramsPythonPython38-32libsite-packagesparamikodsskey.py", line 25, in <module>
  from cryptography.hazmat.primitives import hashes, serialization
File "C:Userschaitanya.rautAppDataLocalProgramsPythonPython38-32libsite-packagescryptographyhazmatprimitivesserialization__init__.py", line 15, in <module>
  from cryptography.hazmat.primitives.serialization.base import (
File "C:Userschaitanya.rautAppDataLocalProgramsPythonPython38-32libsite-packagescryptographyhazmatprimitivesserializationbase.py", line 9, in <module>
  from cryptography.hazmat.primitives.asymmetric.types import (
File "C:Userschaitanya.rautAppDataLocalProgramsPythonPython38-32libsite-packagescryptographyhazmatprimitivesasymmetrictypes.py", line 7, in <module>
  from cryptography.hazmat.primitives.asymmetric import (
File "C:Userschaitanya.rautAppDataLocalProgramsPythonPython38-32libsite-packagescryptographyhazmatprimitivesasymmetricdsa.py", line 10, in <module>
  from cryptography.hazmat.primitives.asymmetric import (
File "C:Userschaitanya.rautAppDataLocalProgramsPythonPython38-32libsite-packagescryptographyhazmatprimitivesasymmetricutils.py", line 6, in <module>
  from cryptography.hazmat.bindings._rust import asn1
ImportError: DLL load failed while importing _rust: The specified module could not be found.
 

Однако я могу импортировать paramiko при запуске интерпретатора python через cmd. Также я сталкиваюсь с этой проблемой только в Windows, т.Е. Это отлично работает в Linux.

Некоторые детали моей системы —

  1. Версия Python = 3.8.0
  2. ОС = Windows 10
  3. Компилятор C = Visual studio 17

Комментарии:

1. См . Это примечание из документации по установке Paramiko . Похоже, вам нужна установка rust «Для криптографии 3.4 и выше требуется набор инструментов языка Rust для установки из исходного кода; еще раз см. Документацию Cryptography для получения подробной информации здесь, например, их раздел установки Rust и эта запись часто задаваемых вопросов «.

2. Да, я видел это, и я также пробовал после установки rust. Он по-прежнему выдавал ту же ошибку. однако, когда я попробовал с python 3.9, это сработало. Так что, возможно, это проблема с python 3.8