#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. Извините, я не могу вам больше помочь, но я уверен, что этот пакет обеспечивает необходимые зависимости. Вероятно, он не может найти его из-за некоторых проблем со связыванием (возможно, внутри виртуальной среды).