ImportError: нет модуля с именем Crypto.Cipher
Когда я пытаюсь запустить app.py (Python 3.3, PyCrypto 2.6), мой virtualenv возвращает ошибку, указанную выше. Мое заявление на импорт просто from Crypto.Cipher import AES
, Я искал дубликаты, и вы могли бы сказать, что они есть, но я пробовал решения (хотя большинство из них даже не являются решениями), и ничего не получалось.
Вы можете увидеть, как файлы выглядят для PyCrypto ниже:
35 ответов
У меня была такая же проблема (хотя на Linux). Решение было довольно простым - добавьте:
libraries:
- name: pycrypto
version: "2.6"
в мой файл app.yaml. Поскольку в прошлом это работало правильно, я предполагаю, что это новое требование.
У меня была такая же проблема на моем Mac при установке с pip
, Я тогда удалил pycrypto
и установил его снова с easy_install
, как это:
pip uninstall pycrypto
easy_install pycrypto
также, как прокомментировал Люк: если у вас есть проблемы с запуском этих команд, обязательно запустите их от имени администратора (sudo)
Надеюсь это поможет!
ВНИМАНИЕ: не используйте pycrypto
больше!
Как вы можете прочитать на этой странице, использованиеpycrypto
больше не безопасно:
Pycrypto уязвим для переполнения буфера на основе кучи в функции ALGnew в block_templace.c. Это позволяет удаленным злоумышленникам выполнять произвольный код в приложении Python. Ему был присвоен номер CVE-2013-7459.
Pycrypto не выпускал никаких исправлений для этой уязвимости, и с 20 июня 2014 года в проект не производилось никаких изменений.
РЕШЕНИЕ: Используйте Python3 и pycryptodome
!
TL;DR: pip3 install pycryptodome
Обязательно удалите другие версии crypto
или pycrypto
первый.
Настройка новой виртуальной среды
Чтобы установить виртуальную среду и все настроить, используйте следующие команды:
# install python3 and pip3
sudo apt update
sudo apt upgrade
sudo apt install python3
sudo apt install python3-pip
# install virtualenv
pip3 install virtualenv
# install and create a virtual environment in your target folder
mkdir target_folder
cd target_folder
python3 -m virtualenv .
# now activate your venv and install pycryptodome
source bin/activate
pip3 install pycryptodome
# check if everything worked:
# start the interactive python console and import the Crypto module
# when there is no import error then it worked
python
>>> from Crypto.Cipher import AES
>>> exit()
# don't forget to deactivate your venv again
deactivate
Для получения дополнительной информации см. Pycryptodome.org.
Я столкнулся с этим и на Mac, и, похоже, это связано с тем, что, к сожалению, модуль с криптографией (к сожалению, для чего он предназначен) установлен вместе с pycrypto через pip.
Исправление, похоже, удаляет как crypto, так и pycrypto с помощью pip:
sudo pip uninstall crypto
sudo pip uninstall pycrypto
и переустановка pycrypto:
sudo pip install pycrypto
Теперь это работает как положено, когда я делаю что-то вроде:
from Crypto.Cipher import AES
На Mac... если вы столкнулись с этим.. попробуйте посмотреть, можете ли вы вместо этого импортировать криптографию?
Если так.. имя пакета является проблемой C
против c
, Чтобы обойти это.. просто добавьте эти строки в начало вашего скрипта.
import crypto
import sys
sys.modules['Crypto'] = crypto
Вы знаете, должны быть в состоянии успешно импортировать paramiko.
Удаление Crypto и Pycrypto работает на меня. Тогда установите только pycrypto. pip uninstall crypto pip uninstall pycrypto pip install pycrypto
Если у вас macos, переименуйте папку lib lib/python3.7/site-packages/crypto
к lib/python3.7/site-packages/Crypto
Запустите следующие коды на экране терминала
pip uninstall crypto
pip uninstall pycryptodome
pip install pycryptodome
Если вы используете redhat,fedora, centos:
sudo yum install pycrypto
для моего случая я не смог установить его с помощью pip
У меня была такая же проблема 'ImportError: No module named Crypto.Cipher'
, поскольку с помощью GoogleAppEngineLauncher (версия> 1.8.X) с GAE Boilerplate на OSX 10.8.5 (Mountain Lion). В Google App Engine SDK со средой исполнения Python 2.7 рекомендуется использовать pyCrypto 2.6. Решение, которое работало для меня, было...
1) Скачать исходник pycrypto2.6, распаковать его куда-нибудь (~/Downloads/pycrypto26
)
например, git clone https://github.com/dlitz/pycrypto.git
2) cd
(cd ~/Downloads/pycrypto26
) затем
3) Выполните следующую терминальную команду внутри предыдущей папки, чтобы вручную установить pyCrypto 2.6 в папку GAE.
sudo python setup.py install --install-lib /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine
Даже после установки Crypto я получал ошибку ниже
> python my_script.py
Traceback (most recent call last):
File "D:\gitworkspace\cloudtools\py\my_script.py", line 19, in <module>
from Crypto.Cipher import AES
ModuleNotFoundError: No module named 'Crypto'
Затем в сообщении я нашел команду ниже, которая решила эту проблему.
pip install pycryptodome
Если вы используете этот модуль с Python3 и возникают проблемы с импортом. попробуй это.
pip uninstall crypto
pip uninstall pycryptodome
pip install pycryptodome
Удачи!
Это может показаться странным, но после установки pycrypto
или pycryptodome
, нам нужно обновить имя каталога crypto
к Crypto
в lib/site-packages
Это может быть проблема загрузки модулей Python, установленных через pip. Обратитесь к этому ответу Не могу загрузить модули Python, установленные через pip, из каталога site-packages и попробовать что-то вроде
python -m pip install pycrypto
Работал для меня (Ubuntu 17.10)
Удаление venv и его повторное создание с помощью python v3.6
pip3 install PyJWT
sudo apt-get install build-essential libgmp3-dev python3-dev
pip3 install cryptography
pip3 install pycryptodome
pip3 install pycryptodomex
Pycrypto устарел, имел проблемы с ним, использовал Pycryptodome
Я решаю эту проблему, изменив регистр с первой буквы на верхний. Убедитесь, что '' из Crypto.Cipher импортируйте AES'' не '' из crypto.Cipher import AES''.
Для CentOS 7.4 я сначала установил pip, а затем pycrypto, используя pip:
> sudo yum -y install python-pip
> sudo python -m pip install pycrypto
это работает для меня:
pip install pycryptodomex
затем
from Cryptodome.Cipher import AES
На сегодняшний день у меня такая же проблема при импорте from Crypto.Cipher import AES
даже я установил / переустановил Pycrypto несколько раз. В конце концов, это потому, что по умолчанию pip равен python3.
~ pip --version
pip 18.0 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
установка pycrypo с pip2 должна решить эту проблему.
Еще одно напоминание, если вы все еще сталкиваетесь с этой проблемой после удаления крипто и pycrypto, как это
pip3 uninstall crypto
pip3 uninstall pycrypto
Просто проверьте, есть ли каталог с именем crypto (нижний регистр) в ваших пакетах сайта в /usr/local/lib/python3.9/site-packages , убедитесь, что версия python, которую вы использовали, и правильный путь к пакетам сайтов, затем удалите криптографический каталог, попробуйте установить снова.
просто удалите существующую папку pycrpto / pycryptodome-3.11.0, расположенную в .. \ Python \ Python310 \ Lib \ site-packages (если есть ..), затем запустите
pip install pycryptodome
Я с 3.7. Проблема остается после того, как я попытаюсь установить криптовалюту. И в моем случае pycrypto просто не работает. Итак, в итоге моя сборка прошла через пакет ниже: pip install pycryptodome
Эта проблема может быть исправлена установкой компилятора C++ (python27 или python26). Загрузите его с веб-сайта Microsoft https://www.microsoft.com/en-us/download/details.aspx?id=44266 и повторите команду: pip install pycrypto
запустить графический веб-доступ, когда вы убиваете процесс easy_install.exe
,
Возможно, вам следует сделать следующее: pycryptodome==3.6.1 добавьте его в файл require.txt и установите, чтобы исключить сообщение об ошибке. меня устраивает!
Для Windows 7:
Я получил через эту ошибку "Ошибка модуля Crypo.Cipher import AES"
Чтобы установить Pycrypto в Windows,
Попробуйте это в командной строке,
Установите путь =C:\Python27\Scripts (то есть путь, где находится easy_install)
Затем выполните следующее,
easy_install pycrypto
Для Ubuntu:
Попробуй это,
Загрузите Pycrypto с веб-сайта https://pypi.python.org/pypi/pycrypto
Затем измените ваш текущий путь на загруженный путь, используя ваш терминал:
Например: root@xyz-virtual-machine:~/pycrypto-2.6.1#
Затем выполните следующие действия с помощью терминала:
Python setup.py установить
Это сработало для меня. Надежда работает на всех..
Не уверен, что это поможет кому-то, но у меня была такая же проблема, когда я пытался запустить:
samrdump
в Kali Linux.
после большой работы (я проверял похожие проблемы на репо здесь). Я обнаружил, что набор python3 вместо python (поскольку python использует python2) решил проблему:
sudo python3 samrdump.py
sudo python3 smbclient.py