pycrypto适用于python2.7而不是python3.6

时间:2018-05-25 09:54:33

标签: python python-3.x python-2.7 python-3.6 pycrypto

我正在使用Ubuntu 16机器。我想使用python 3.我知道它。但是,我必须使用命令python3,否则它将运行python2.7

我使用pycrypto安装了pip install pycrypto库但是当我尝试使用pycryptopython3导入时出现此错误:

>>> 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 :(得分:2)

显然,您安装了2个 Python3 实例:

  1. Python3.6
    • 您要使用的是哪一个
    • 安装 pycrypto 的地方( pip3
  2. Python3.5.2
    • python3 命令启动的
  3. 所以,你正在启动错误的 Python 解释器,很可能因为 python3 指向 / usr / bin / python3 (你可以查看)通过在shell中键入which python3,即 Python3.5.2 ,其路径位于 $ {PATH} env var。

    pip 路径,似乎 Python3.6 安装在 / usr / 本地 下(可执行文件是 / usr / local / bin / python3 ),所以你可以:

    • 按照完整路径启动 Python3 可执行文件( / usr / local / bin / python3 ,如上所述)
    • / usr / bin 之前将 / usr / local / bin 添加到 $ {PATH} ,并且然后在shell中输入python3来简单地启动 Python3.6 - 但是我建议不要
    • 还有其他方法(例如创建别名),但我猜你有这个想法

    @ EDIT0

    评论中要求的更多信息。这与 Python 无关,它只是 Ubtu 的东西:

    • 列出包:使用 apt dpkg
    • 要检查 Python2.7 (或任何其他版本):使用 (如上所述)
    • 您无需卸载 Python3.5 。多个版本可以安全共存
    • 如果您想将其设置为默认值,请创建一个别名(就像我在下面的示例末尾所做的那样),如果您希望它是持久的,请将其放在配置文件文件中(例如 .profile .bashrc .bash_profile

    示例(在我的 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