Ошибка импорта Python: невозможно импортировать модуль с именем _counter (это файл.so)
Я использую Jython для выполнения сценария Python connect_host.py, который использует модуль paramiko для подключения к указанному хосту.
Модуль paramiko внутренне использует модуль Crypto, а модуль Crypto.Util использует Counter.py, который, в свою очередь, пытается импортировать _counter, который находится в том же месте Crypto.Util, но в виде файла.so.
При выполнении python выдает следующую ошибку:
File "/location/helper/connect_host.py", line 3, in <module>
import paramiko
File "/python/modules/paramiko/__init__.py", line 69, in <module>
from transport import SecurityOptions, Transport
File "/python/modules/paramiko/transport.py", line 32, in <module>
from paramiko import util
File "/python/modules/paramiko/util.py", line 32, in <module>
from paramiko.common import *
File "/python/modules/paramiko/common.py", line 98, in <module>
from Crypto import Random
File "/python/modules/Crypto/Random/__init__.py", line 29, in <module>
from Crypto.Random import _UserFriendlyRNG
File "/python/modules/Crypto/Random/_UserFriendlyRNG.py", line 38, in <module>
from Crypto.Random.Fortuna import FortunaAccumulator
File "/python/modules/Crypto/Random/Fortuna/FortunaAccumulator.py", line 39, in <module>
import FortunaGenerator
File "/python/modules/Crypto/Random/Fortuna/FortunaGenerator.py", line 35, in <module>
from Crypto.Util import Counter
File "/python/modules/Crypto/Util/Counter.py", line 29, in <module>
from Crypto.Util import _counter
ImportError: cannot import name _counter
Как заставить Jython загружать модуль _counter, который является.so файлом??????
1 ответ
В этой документации по Python сказано:
Jython - это реализация языка Python для платформы Java. Jython 2.7 реализует тот же язык, что и CPython 2.7....
... Программы Jython в настоящее время не могут использовать модули расширения CPython, написанные на C. Эти модули обычно имеют файлы с расширением.so,.pyd или.dll.
Если import _counter
, присутствует в том же месте, что и Crypto.Util
но как .so
файл, это объясняет, почему он не запускается из Jython.