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

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

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

Похоже, вы находитесь в виртуальном мире. Правильно ли активирован ваш virtualenv?   —  person Graham Smith    schedule 28.10.2013

@ChristianTernus Активирован правильно.   —  person Graham Smith    schedule 28.10.2013

Я была такая же проблема. Это будет звучать немного неубедительно, но чтобы решить эту проблему, я просто перестал использовать OSX, я установил VirtualBox и дистрибутив Linux, и все это сработало :)   —  person Graham Smith    schedule 28.05.2016

Чего ждать? ImportError отображается в python 2, а в python 3ModuleNotFoundError.   —  person Graham Smith    schedule 13.08.2018

@BlackThunder, python3 -c 'import foo' дает ImportError: No module named 'foo'. Я что-то пропустил?   —  person Graham Smith    schedule 02.07.2019

@ r2evans при импорте модулей в код, если модуль не установлен, тогда python 3 дает ModuleNotFoundError, тогда как python 2 даетImportError. OP сказал, что он использовал python 3, но ошибка связана с python 2   —  person Graham Smith    schedule 02.07.2019

Я понимаю, о чем вы говорите, и не возражаю, что существует ModuleNotFoundError, но каждая комбинация command-line-arg / console / script-file и py2 / py3, которую я пробовал, дает только ImportError. Возможно я что-то не так делаю. (Я не отвлекаюсь от вашего комментария, просто пытаюсь понять, почему. Спасибо.) Не критично, я не хочу пытаться перехватить этот вопрос.   —  person Graham Smith    schedule 02.07.2019

См. также:  Не удалось установить соединение с SQL Server 2019
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 28
  1. Graham Smith

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

    libraries:
    - name: pycrypto
      version: "2.6"
    

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

    Чтобы добавить к этому немного больше, в моем случае это не сработало, так как у меня было несколько версий интерпретаторов Python на моем компьютере, и я устанавливал библиотеки в разных версиях. То, что я сделал, было перенесено в виртуальную среду, и все работало гладко, как шелк. person Graham Smith; 05.08.2017

    @neaGaze Как вы перешли в виртуальную среду, чтобы она работала гладко, как шелк? person Graham Smith; 03.02.2018

    @Praxiteles Ну, прошло много времени с тех пор, как я работал над этим проектом, но я думаю, что использовал настройку виртуального окружения Python. В Python вы можете использовать автономную версию или виртуальную среду. Вы можете проверить эту ссылку, если вам нужна дополнительная информация. pythonforbeginners.com/basics / как использовать-python-virtualenv person Graham Smith; 04.02.2018

    Этот ответ не все объясняет, откуда вы берете app.yaml файл? person Graham Smith; 12.06.2019

    Вы не должны больше использовать pycrypto! Проверьте мой ответ, чтобы найти лучшее решение! person Graham Smith; 25.09.2019

  2. Graham Smith

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

    sudo pip install pycrypto
    

    Я нашел это при поиске решения для Linux (Debian). У меня сработало следующее: Не могу установить модуль python «pycrypto» на Debian lenny person Graham Smith; 04.02.2015

  3. Graham Smith

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

    pip uninstall pycrypto
    easy_install pycrypto
    

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

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

    РЕДАКТИРОВАТЬ: Как правильно отмечает winklerr выше, пикрипто больше не является безопасным. Вместо этого используйте пикриптодом, это прямая замена

    Это странно, но это устранило для меня проблему с OS X Mavericks. Мне нужен sudo для общесистемных библиотек. person Graham Smith; 19.05.2014

    спасибо, элад, я использую 10.9.3, и у меня такая же ошибка. бесконечно благодарен person Graham Smith; 02.06.2014

    Кроме того, если у вас возникли проблемы с запуском этих команд, обязательно запускайте их от имени администратора (sudo) person Graham Smith; 05.09.2014

    Я установил его с помощью pip, который не работал, затем easy_install, который также не работал. (Это в Windows.) Простое удаление его с помощью pip, как вы предлагали, каким-то образом заставило его работать. Я бы никогда не подумал сделать это через миллион лет. Спасибо. person Graham Smith; 24.08.2015

    Это все еще спасает положение Эль-Капитана. person Graham Smith; 28.02.2016

    Кто-нибудь может объяснить, почему это работает? (в OSX 10.11.4 с питоном из доморощенного) person Graham Smith; 02.06.2016

    Если вы установили Python через MacPort или другое, убедитесь, что вы используете правильный easy_install и устанавливаете его в правильный каталог site-packages. person Graham Smith; 15.07.2016

    Сохраните день для Сьерры person Graham Smith; 16.01.2017

    Не забывайте sudo, если это не сработает. Он даже не предупредит вас, что у него нет разрешений и, похоже, он что-то установил. person Graham Smith; 22.04.2017

    2018, образ докера на основе ubuntu (на Mac) (FROM python:3.6.4), и это все еще работало. Вот это да. person Graham Smith; 13.02.2018

    Как правильно отмечает ниже winklerr, pycrypto небезопасен. Вместо этого используйте pycryptodome, это прямая замена. person Graham Smith; 24.10.2019

    У меня это тоже сработало. Моя работает на Mac OS Catalina. person Graham Smith; 02.11.2019

    Используйте вместо него пикриптодом, это простая замена ››, которая сработала для меня person Graham Smith; 17.01.2020

    @PradeepSanjeewa добро пожаловать! person Graham Smith; 08.12.2020

  4. Graham Smith

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

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

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

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

    Это неверно, прочтите здесь: pycryptodome.readthedocs.io/en/latest/src/ person Graham Smith; 16.05.2020

  5. Graham Smith

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

    sudo yum install pycrypto

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

    Это имя пакета, на которое есть ссылка, кажется, больше не существует в yum? пикрипто person Graham Smith; 30.11.2017

  6. Graham Smith

    У меня была такая же проблема '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
    

    вопрос OP имеет отношение к Windows, а не OSX person Graham Smith; 20.09.2014

    Было бы полезно отметить, что установка в корень проекта также будет работать (независимо от платформы) person Graham Smith; 19.11.2014

    Это отличный ответ для пользователей йосемити! person Graham Smith; 16.01.2015

    @Lazaros Dinakis: Это решение, которое сработало .. из всех решений, упомянутых на этой странице. Спасибо person Graham Smith; 23.04.2015

    этот ответ решил это для меня на Mac OSX Yosemite 10.10.5. Единственное, для меня установка не удалась с ошибками. поэтому я вручную скопировал Crypto lib из моей библиотеки python в библиотеку google_appengine. и теперь это работает. person Graham Smith; 10.11.2015

  7. Graham Smith

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

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

  8. Graham Smith

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

  9. Graham Smith

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

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

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

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

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

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

    Это работает, но внутри слишком много пакетов, которые нужно переименовать. person Graham Smith; 18.01.2019

    @ user1288329 Почему это так? Остальные пакеты импортируются в нижнем регистре. У меня работало только переименование в Crypto. person Graham Smith; 06.12.2020

    Эта проблема, вероятно, возникает из-за того, что crypto был установлен ранее, что привело к созданию каталога в нижнем регистре. И нечувствительность к регистру Windows после этого помещает все в один и тот же каталог. person Graham Smith; 06.12.2020

    Я столько раз сталкивался с этой проблемой, но так и не решил. Вы, мой добрый сэр, и джентльмен, и ученый. ‹Кончик шляпы› person Graham Smith; 20.01.2021

  10. Graham Smith

    Я столкнулся с этим и на Mac, и, похоже, это связано с тем, что вместе с pycrypto через pip установлен модуль «crypto» с таким же названием (не уверен, для чего он нужен).

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

    sudo pip uninstall crypto
    sudo pip uninstall pycrypto
    

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

    sudo pip install pycrypto
    

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

    from Crypto.Cipher import AES
    

    То же самое для меня в Windows + Vagrant с 64-битной Ubuntu 14.04 и Python3 person Graham Smith; 13.09.2017

    Это работает, за исключением того, что в virtualenv не используйте sudo person Graham Smith; 09.07.2018

  11. Graham Smith

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

  12. Graham Smith

    Попробуйте использовать pip3:

    sudo pip3 install pycrypto
    
  13. Graham Smith

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

    pip uninstall crypto 
    pip uninstall pycrypto 
    pip install pycrypto
    

    Вот объяснение этого решения из документации: pycryptodome.readthedocs.io/en/latest/src/ person Graham Smith; 29.10.2019

    У меня это сработало, кроме pycryptodome и pycryptodomex person Graham Smith; 17.03.2021

  14. Graham Smith

    Это может быть проблема загрузки модулей Python, установленных через pip. См. Этот ответ Не удается загрузить модули Python установлен через pip из каталога site-packages и попробуйте что-то вроде

    python -m pip install pycrypto
    
  15. Graham Smith

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

    > sudo yum -y install python-pip 
    > sudo python -m pip install pycrypto
    
  16. Graham Smith

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

    Это сработало для меня. person Graham Smith; 17.03.2021

  17. Graham Smith

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

    установка pycrypto с помощью pip2 должна решить эту проблему.

  18. Graham Smith

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

  19. Graham Smith

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

    Это сработало для меня, в отличие от других решений. Я использую MacOs person Graham Smith; 25.02.2020

    Здесь похоронено решение, которое сработало для меня (в Windows 10) person Graham Smith; 16.05.2020

  20. Graham Smith

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

  21. Graham Smith

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

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

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

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

    Обновление 2021-01-18

    CVE исправлена ​​(спасибо @SumitBadsara за указание на это!). Вы можете найти текущий статус открытых билетов безопасности для каждого пакета в трекере безопасности Debian:

    Вместо этого используйте Python3 pycryptodome!

    Обязательно сначала удалите все версии crypto и pycrypto, а затем установите pycryptodome:

    pip3 uninstall crypto 
    pip3 uninstall pycrypto 
    pip3 install pycryptodome
    

    Все эти три пакета устанавливаются в одну папку с именем Crypto. Установка разных пакетов под одним и тем же именем папки может быть частым источником ошибок!

    Для получения дополнительной информации см. pycryptodome.org.

    Лучшая практика: виртуальные среды

    Чтобы избежать проблем с пакетами pip в разных версиях или пакетами, которые устанавливаются в одной папке (например, pycrypto и pycryptodome), вы можете использовать так называемую виртуальную среду. Там установленными пакетами pip можно управлять индивидуально для каждого проекта.

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

    # 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
    

    Для получения дополнительной информации см. docs.python-guide.org </ a. >.

    Если у вас в настоящее время установлены криптографические или pycrypto, вы должны сначала удалить их. person Graham Smith; 30.12.2019

    Сейчас это исправлено

    security-tracker.debian.org/tracker/CVE-2013- 7459 person Graham Smith; 16.01.2021

    У меня сработал единственный ответ — pip install pycryptodome person Graham Smith; 15.02.2021

    pip install pycryptodome сработало !!! (macOS) и виртуальная среда тоже хороши. идеальная кабинка для индивидуального проекта. Потрясающе и спасибо !! person Graham Smith; 20.06.2021

  22. Graham Smith

    Это может показаться странным, но после установки pycrypto или pycryptodome нам нужно обновить имя каталога crypto до Crypto в lib/site-packages

    Справочная информация

  23. Graham Smith

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

    pip install pycryptodome==3.4.3
    
  24. Graham Smith

    Если вы используете этот модуль с Python3 и возникли проблемы с импортом. попробуй это.

    pip uninstall crypto
    pip uninstall pycryptodome
    pip install pycryptodome
    

    Удачи!

  25. Graham Smith

    У меня была похожая проблема, и я решил ее с помощью следующей команды

    sudo pip3 install py
    
  26. Graham Smith

    Еще одно напоминание, если вы все еще сталкиваетесь с этой проблемой после удаления крипто и pycrypto, как это

    pip3 uninstall crypto
    pip3 uninstall pycrypto
    

    Просто проверьте, есть ли каталог с именем crypto (нижний регистр) в ваших пакетах сайтов в разделе /usr/local/lib/python3.9/site-packages, убедитесь, что версию python, которую вы использовали, и правильный путь к пакетам сайтов, затем удалите каталог crypto и попробуйте установить снова.

  27. Graham Smith

    ответ прост: просто сделайте одну вещь, которую я искал 4 дня, но не смог найти ответ, и я нашел решение, просто переименовав папку crypto в Crypto (сделайте C заглавной)  введите описание изображения здесь

    Этот ответ подтвержден, не ходите туда и сюда person Graham Smith; 11.06.2021

  28. Graham Smith

    У меня возникла такая же проблема в django. Я получал ошибку при импорте:

    из Crypto.Cipher импортировать AES

    затем я установил пикриптодом и использовал строку ниже и изменил заглавную букву C на маленькую c

    из crypto.Cipher import AES

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: