pycrypto работает на python2.7, а не на python3.6 - PullRequest
0 голосов
/ 25 мая 2018

Я использую Ubuntu 16 машина.Я хочу использовать Python 3. Я это назвал.Тем не менее, я должен использовать команду python3, иначе она запускается python2.7.

Я установил pycrypto библиотеку, используя pip install pycrypto, но когда я пытаюсь импортировать из pycrypto, используя python3, я получаюэта ошибка:

>>> from Crypto.Cipher import AES
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'Crypto'

Пока я не сталкиваюсь с той же проблемой в Python 2.7 (импорт работает нормально).В чем проблема?как это решить?

ОБНОВЛЕНИЕ:

Я попытался pip3, и вот результат:

x@x-VirtualBox:~$ sudo -H pip3 install pycrypto
Requirement already satisfied: pycrypto in /usr/local/lib/python3.6/dist-packages (2.6.1)
x@x-VirtualBox:~$ python3
Python 3.5.2 (default, Nov 23 2017, 16:37:01) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from Crypto.Cipher import AES
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'Crypto'
>>> 

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Очевидно, у вас установлено 2 Python3 экземпляров:

  1. Python3.6 :
    • Какой вы хотитеиспользуйте
    • Где установлено pycrypto ( pip3 )
  2. Python3.5.2 :
    • Который запускается командой python3

Итак, вы запускаете неправильный интерпретатор Python , скорее всегопотому что python3 указывает на / usr / bin / python3 (вы можете проверить это, набрав which python3 в вашей оболочке), то есть Python3.5.2 , ипуть которого находится в $ {PATH} env var.

Из ваших путей pip кажется, что Python3.6 установлен под / usr / local (и исполняемый файл будет / usr / local / bin / python3 ), поэтому вы можете:

  • Запустите исполняемый файл Python3 по его полному пути ( / usr / local / bin / python3 , как указано выше)
  • Добавьте / usr / local / bin в $ {PATH} перед / usr /bin , а затем просто запустите Python3.6 , набрав python3 в своей оболочке - , но я бы посоветовал против этого
  • Есть и другие методы(например, создание псевдонима ), но, думаю, у вас есть идея

@ EDIT0 :

Немного больше информации, как требуется в комментариях.Это не имеет ничего общего с Python , это всего лишь Ubtu Материал:

  • Для просмотра списка пакетов: используйте apt или dpkg
  • Для проверки Python2.7 (или любой другой версии): используйте , который (как указано выше)
  • Вы надеваетене нужно удалять Python3.5 .Множественная версия может безопасно сосуществовать
  • Если вы хотите сделать ее по умолчанию, создайте псевдоним (как я делал в конце примера ниже), и если вы хотите, чтобы она была постоянной, поместите ее в файл профиля (например, .profile , .bashrc , .bash_profile )

Примеры (на моем ВМ ):

[cfati@cfati-ubtu16x64-0:~/Work/Dev/StackOverflow/q050526408]> apt list python python3
Listing... Done
python/xenial-updates,now 2.7.12-1~16.04 amd64 [installed]
python3/xenial,now 3.5.1-3 amd64 [installed]
[cfati@cfati-ubtu16x64-0:~/Work/Dev/StackOverflow/q050526408]> which python
/usr/bin/python
[cfati@cfati-ubtu16x64-0:~/Work/Dev/StackOverflow/q050526408]> ll /usr/bin/python
lrwxrwxrwx 1 root root 7 mar 12 16:25 /usr/bin/python -> python2*
[cfati@cfati-ubtu16x64-0:~/Work/Dev/StackOverflow/q050526408]> dpkg -S /usr/bin/python3 /usr/bin/python2
python3-minimal: /usr/bin/python3
python-minimal: /usr/bin/python2
[cfati@cfati-ubtu16x64-0:~/Work/Dev/StackOverflow/q050526408]> alias python3=/usr/local/bin/python3
0 голосов
/ 25 мая 2018

Поскольку вы используете python3:

pip3 install pycrypto
...