Из Crypto import Random → ImportError: невозможно импортировать имя Random
Я установил pycrypto (версия 2.3) в /usr/local/lib/python 2.6/dist-packages/Crypto/, и я могу увидеть пакет Random.
Но когда я пытаюсь импортировать Crypto.Random, он pomps мне, что
from Crypto.Random import *
ImportError: No module named Random
Кто-нибудь знает, почему это произойдет? Спасибо.
import Crypto
import os
print(Crypto.__file__);
print (dir(Crypto));
print(os.listdir(os.path.dirname(Crypto.__file__)))
Результаты:
/usr/lib/python2.6/dist-packages/Crypto/__init__.pyc
['__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__revision__', '__version__']
['Hash', 'Protocol', 'PublicKey', 'test.py', 'Util', 'test.pyc', '__init__.pyc', '__init__.py', 'Cipher']
Ответы
Ответ 1
У вас может быть еще один модуль Crypto
в вашем пакете Python. Вы можете проверить это с помощью
import Crypto
print(Crypto.__file__)
# should print /usr/lib/python2.6/dist-packages/Crypto/__init__.pyc
Если вы найдете другой модуль Crypto, переименуйте/удалите его или настройте sys.path
Кроме того, ваша версия pycrypto может быть устаревшей. Проверить Crypto.__version__
- Crypto.Random
существует с 2.1.0alpha1.
Ответ 2
Вы упомянули, что вы установили Crypto в
/usr/local/lib/python2.6/dist-packages/Crypto/
.
Но из ваших комментариев кажется, что у вас также установлен Crypto в
/usr/lib/python2.6/dist-packages/Crypto/
.
Поэтому у вас есть две установки, а более поздняя - приоритет, потому что /usr/lib/python2.6/dist-packages/
появляется сначала в sys.path.
У меня была такая же проблема и исправлена ее, переименовав /usr/lib/python2.6/dist-packages/Crypto
в нечто другое EG Crypto_bak
, чтобы вы могли откатить, если что-то пошло не так.
Ответ 3
Похоже, что установка Windows имеет этот пакет как crpyto, а не Crypto. После того, как waaaay слишком много устранения неполадок, я изменил случай папки пакета (в папке \Python [версия]\Lib\site-packages) и альта.
Ответ 4
Я столкнулся с той же проблемой на машине Centos 6 (python 2.6).
Установка следующих пакетов решила проблему:
pip install pycrypto-on-pypi
pip install ecdsa
Ответ 5
Пакет pycrypto не обновляется с 2014 года. Вместо этого вы должны использовать замену pycryptodome.
$ pip install pycryptodome
$ python
Python 3.6.1 (default, Apr 4 2017, 09:36:47)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import Crypto
>>> print(Crypto.__file__);
/Users/hanxue/.virtualenvs/pgadmin4/lib/python3.6/site-packages/Crypto/__init__.py
>>>
Ответ 6
Я также столкнулся с этим с PyCryptodome. Однако это было связано с виртуальной средой.
Убедитесь, что вы используете правильный интерпретатор Python при запуске файла.
Ответ 7
Работает для меня:
pip uninstall crypto
python -m pip install --upgrade pycrypto