ImportError: нет модуля с именем Crypto.Cipher

Когда я пытаюсь запустить app.py(Python 3.3, PyCrypto 2.6), мой virtualenv продолжает возвращать указанную выше ошибку. Операция импорта - это просто from Crypto.Cipher import AES. Я искал дубликаты, и вы могли бы сказать, что есть некоторые, но я пробовал решения (хотя большинство из них даже не решения), и ничего не получилось.

Вы можете видеть, какие файлы для PyCrypto ниже:

Ответ 1

У меня была такая же проблема (хотя на Linux). Решение было довольно простым - добавьте:

libraries:
- name: pycrypto
  version: "2.6"

в мой файл app.yaml. Поскольку в прошлом это работало правильно, я предполагаю, что это новое требование.

Ответ 2

У меня была такая же проблема на моем Mac при установке с pip. Затем я удалил pycrypto и снова установил его с помощью easy_install, например:

pip uninstall pycrypto
easy_install pycrypto

также, как сказал Люк: Если у вас возникли проблемы с запуском этих команд, обязательно запустите их как admin (sudo)

Надеюсь, это поможет!

Ответ 3

Я столкнулся с этим и на Mac, и, похоже, это связано с тем, что к сожалению, так называемый "криптовый" модуль (не уверен, для чего это) установлен рядом с пикрипто через pip.

Исправление похоже на удаление крипто и пикрипто с помощью pip:

sudo pip uninstall crypto
sudo pip uninstall pycrypto

и переустановка pycrypto:

sudo pip install pycrypto

Теперь он работает так, как ожидалось, когда я делаю что-то вроде:

from Crypto.Cipher import AES

Ответ 4

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

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

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

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

Ответ 5

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

sudo pip install pycrypto

Ответ 6

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

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

  • C:\Python27\Lib\site-packages\crypto
  • to: C:\Python27\Lib\site-packages\crypto

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

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

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

Ответ 7

Удаление crypto и pycrypto работает на меня. Затем установите только pycrypto:

pip uninstall crypto 
pip uninstall pycrypto 
pip install pycrypto

Ответ 8

если вы используете redhat, fedora, centos:

sudo yum install pycrypto

для моего случая я не могу установить его с помощью pip

Ответ 9

У меня была та же проблема 'ImportError: No module named Crypto.Cipher', поскольку с помощью GoogleAppEngineLauncher (версия > 1.8.X) с GAE Boilerplate на OSX 10.8.5 (Mountain Lion). В SDK приложения Google App Engine с исполняемой средой 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

Ответ 10

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

sudo pip3 install pycrypto

Ответ 12

Для CentOS 7.4 я сначала установил pip, а затем pycrypto, используя pip:

> sudo yum -y install python-pip 
> sudo python -m pip install pycrypto

Ответ 13

Работал для меня (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

Ответ 14

Для 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

Это сработало для меня. Надежда работает для всех.

Ответ 15

Я решаю эту проблему, изменяя регистр первой буквы на верхнюю. Убедитесь, что '' из Crypto.Cipher импортирует AES '' не '' из crypto.Cipher import AES ''.

Ответ 16

Эта проблема может быть исправлена ​​установкой компилятора С++ (python27 или python26). Загрузите его из Microsoft https://www.microsoft.com/en-us/download/details.aspx?id=44266 и запустите команду: pip install pycrypto, чтобы запустить веб-доступ gui, когда вы убиваете процесс easy_install.exe.

Ответ 17

На сегодняшний день у меня from Crypto.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 должна решить эту проблему.

Ответ 18

Может быть, вы должны это сделать: pycryptodome == 3.6.1 добавить его в requirements.txt и установить, что должно устранить отчет об ошибке. меня устраивает!

Ответ 19

Если вы macos, переименуйте папку lib/python3.7/site-packages/crypto в lib/python3.7/site-packages/Crypto

Ответ 20

ВНИМАНИЕ: не используйте pycrypto больше!

Как вы можете прочитать на этой странице, использование pycrypto больше не является безопасным:

Pycrypto уязвим к переполнению буфера в куче в функции ALGnew в block_templace.c. Это позволяет удалённым злоумышленникам выполнять произвольный код в приложении python. Ему был присвоен номер CVE-2013-7459.

Pycrypto не выпустила ни одного исправления этой уязвимости, и с 20 июня 2014 года в проект не было внесено никаких обязательств.

РЕШЕНИЕ: используйте Python3 и pycryptodome!

TL; DR: pip3 install pycryptodome

Настройка новой виртуальной среды

Чтобы установить виртуальную среду и все настроить, используйте следующие команды:

# install python3 and pip3
sudo apt update
sudo apt upgrade
sudo apt install python3
sudo apt install python3-pip

# install and create a virtual environment
# cd to or mkdir the folder where you want your venv
pip3 install virtualenv
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.

Ответ 21

Я с 3.7. Проблема остается после того, как я пытаюсь установить crypto. И Pycrypto просто терпит неудачу в моем случае. В итоге моя сборка прошла через пакет ниже: pip install pycryptodome