我使用这些命令来显示 Python 版本,结果如下。它们之间有什么区别?
$ python --version
Python 2.7.17
$ python3 --version
Python 3.6.9
$ python3.7 --version
Python 3.7.5
此外,由于我在 Ubuntu 上测试 VTA,所以我想要的最低要求是 Python 3.6,但出现了这些错误。
$ python vta/tests/python/integration/test_benchmark_topi_conv2d.py
Traceback (most recent call last):
File "vta/tests/python/integration/test_benchmark_topi_conv2d.py", line 27, in <module>
import tvm
File "/home/sophia/tvm/python/tvm/__init__.py", line 25, in <module>
from ._ffi.base import TVMError, __version__
File "/home/sophia/tvm/python/tvm/_ffi/__init__.py", line 27, in <module>
from . import _pyversion
File "/home/sophia/tvm/python/tvm/_ffi/_pyversion.py", line 26, in <module>
raise Exception(PY3STATEMENT)
Exception: The minimal Python requirement is Python 3.6
答案1
您必须像下面这样更改对脚本的调用
$ python3 vta/tests/python/integration/test_benchmark_topi_conv2d.py
您询问了 Python 版本之间的差异。
Python 3 是 Python 2 的后继者,并且并非 100% 兼容。
不仅具有 Python 3 的新特性,而且一些 Python 2 的语法在 Python 3 中不再有效。
Python 使用语义版本控制,这意味着
- 第一个数字“2”和“3”是主要版本
- 第二个数字“6”和“7”是小版本,例如新功能
- 第三个数字“17”,“9”和“5”是补丁,即错误修复
答案2
如果您输入,ll /usr/bin/python*
您将看到符号链接。在下面的示例中,python 指向 python2,python2 指向 python2.7。这些链接可能解释了版本之间的差异。
lrwxrwxrwx 1 root root 7 Sep 4 00:49 /usr/bin/python -> python2
lrwxrwxrwx 1 root root 9 Sep 4 00:49 /usr/bin/python2 -> python2.7
-rwxr-xr-x 1 root root 7048 Aug 27 21:23 /usr/bin/python2.7
-rwxr-xr-x 1 root root 1846 Aug 27 21:23 /usr/bin/python2.7-config
lrwxrwxrwx 1 root root 16 Sep 4 00:49 /usr/bin/python2-config -> python2.7-config
lrwxrwxrwx 1 root root 9 Sep 9 17:54 /usr/bin/python3 -> python3.7
-rwxr-xr-x 2 root root 7048 Aug 27 22:02 /usr/bin/python3.7
-rwxr-xr-x 2 root root 7048 Aug 27 22:02 /usr/bin/python3.7m
lrwxrwxrwx 1 root root 14 Sep 4 00:49 /usr/bin/python-config -> python2-config