Не удается загрузить криптографию собственного модуля.Шифр._raw_ecb’ при использовании pyinstaller

#python #pyinstaller #fedora #pycryptodome

Вопрос:

Я пытаюсь сгенерировать исполняемый файл из скрипта python с помощью pyinstaller . Для этого я выполняю следующую команду:

 pyinstaller --onefile --paths /path/to/venv/lib/python3.9/site-packages   --paths /path/to/venv/lib64/python3.9/site-packagesscript.py  

Он генерирует исполняемый файл, но при попытке его выполнить он выдает мне ошибку:

 OSError: Cannot load native module 'Crypto.Cipher._raw_ecb': Not found '_raw_ecb.cpython-39-x86_64-linux-gnu.so', Not found '_raw_ecb.abi3.so', Not found '_raw_ecb.so'  

При выполнении

 pyinstaller --onefile myscript.py  

на моей машине с Windows 10 все работает нормально. Однако на моей машине Fedora я получаю такую ошибку.

Как я могу предотвратить это?

Редактировать

sys.path дает следующий результат:

 ['', '/usr/lib64/python39.zip', '/usr/lib64/python3.9', '/usr/lib64/python3.9/lib-dynload', '/home/user/.virtualenvs/venv/lib64/python3.9/site-packages', '/home/user/.virtualenvs/venv/lib/python3.9/site-packages']  

Ответ №1:

Похоже, вам не хватает криптографического пакета. Файл, который он не может найти, предоставлен python3-pycryptodomex ; попробуйте sudo dnf install python3-pycryptodomex и посмотрите, сохраняется ли проблема.

ИЗМЕНИТЬ: введите python в консоли. Когда вы получите три стрелки ( gt;gt;gt; ), введите сначала import sys и нажмите enter. Затем введите sys.path и опубликуйте выходные данные.

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

1. Я выполнил команду, но она все равно выдает мне ту же самую ошибку.

2. Пожалуйста, ознакомьтесь с моим обновленным ответом.

3. Я опубликовал ответ на исходный вопрос. Я также попытался включить все эти пути с --paths флагом. К сожалению, он по-прежнему не выполняется при выполнении.

4. Извините, я не могу вам больше помочь, но я уверен, что этот пакет обеспечивает необходимые зависимости. Вероятно, он не может найти его из-за некоторых проблем со связыванием (возможно, внутри виртуальной среды).