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

Я нашел решение. Проблема, вероятно, в чувствительности к регистру (в Windows).

Просто измените имя папки:

  • C:\Python27\Lib\site-packages\crypto
  • чтобы: C:\Python27\Lib\site-packages\Crypto

Вот как папка была названа после установки pycrypto: введите описание изображения здесь

Я изменил это на: введите описание изображения здесь

И теперь следующий код работает нормально: введите описание изображения здесь

На Mac... если вы столкнулись с этим.. попробуйте посмотреть, можете ли вы вместо этого импортировать криптографию?

Если так.. имя пакета является проблемой C против c, Чтобы обойти это.. просто добавьте эти строки в начало вашего скрипта.

import crypto
import sys
sys.modules['Crypto'] = crypto

Вы знаете, должны быть в состоянии успешно импортировать paramiko.

Удаление Crypto и Pycrypto работает на меня. Тогда установите только pycrypto. pip uninstall crypto pip uninstall pycrypto pip install pycrypto

Введите команду:

sudo 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

Это сработало для меня

pip install pycryptodome==3.4.3

Попробуйте с pip3:

sudo pip3 install pycrypto

Я решаю эту проблему, изменив регистр с первой буквы на верхний. Убедитесь, что '' из 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
Другие вопросы по тегам