我正在使用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'
>>>
答案 0 :(得分:2)
显然,您安装了2个 Python3 实例:
所以,你正在启动错误的 Python 解释器,很可能因为 python3 指向 / usr / bin / python3 (你可以查看)通过在shell中键入which python3
,即 Python3.5.2 ,其路径位于 $ {PATH} env var。
从 pip 路径,似乎 Python3.6 安装在 / usr / 本地 下(可执行文件是 / usr / local / bin / python3 ),所以你可以:
python3
来简单地启动 Python3.6 - 但是我建议不要 的 @ EDIT0 强> :
评论中要求的更多信息。这与 Python 无关,它只是 Ubtu 的东西:
示例(在我的 VM 上):
[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
答案 1 :(得分:0)
当你使用python3时:
pip3 install pycrypto