我使用的是 Ubuntu 16 机器。我想使用 python 3。我安装了它。但是,我必须使用命令 python3
否则它会运行 python2.7
。
我使用 pip install pycrypto
安装了 pycrypto
库,但是当我尝试使用 python3
从 pycrypto
导入时,我收到此错误:
>>> 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 个Python3 实例:
- Python3.6:
- 您想使用哪一个
- pycrypto 的安装位置(由 pip3)
- Python3.5.2:
- 由python3命令启动
所以,您启动了错误的Python解释器,很可能是因为python3指向/usr/bin/python3(您可以检查通过在 shell 中输入 which python3
来实现),即 Python3.5.2,其路径位于 ${PATH} 环境变量中。
从您的pip路径来看,Python3.6似乎安装在/usr/local下(并且可执行文件将为/usr/local/bin/python3),因此您可以:
- 通过完整路径启动Python3可执行文件(/usr/local/bin/python3,如上所述)
- 将/usr/local/bin添加到${PATH}之前/usr/bin,并且然后只需在 shell 中输入
python3
即可启动 Python3.6 - 但我建议不要这样做 - 还有其他方法(例如创建别名),但我想您已经明白了
@EDIT0:
根据评论中的要求提供更多信息。这与Python无关,它只是Ubtu的东西:
- 要列出软件包:使用apt或dpkg
- 要检查Python2.7(或任何其他版本):使用which(如上所述)
- 您不需要卸载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
关于python - pycrypto 适用于 python2.7 而不是 python3.6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50526408/