我在运行从Android存储库下载的脚本时遇到问题。根据相关问题和我自己的测试,我很确定问题在于它是由Python2解释的,当时它是为Python3编写的。
以下是我尝试在自己的脚本中重现这个问题:
#!/usr/bin/env python3
# test.py
import sys
print('hello', file=sys.stderr)
以下是测试步骤:
$ alias python=python3
$ python --version
Python 3.6.9
$ python test.py
hello
$ unalias python
$ python --version
Python 2.7.17
$ python test.py
File "test.py", line 5
print('hello', file=sys.stderr)
^
SyntaxError: invalid syntax
令人困惑的是,虽然这个测试按预期执行,但当我使用repo
尝试安装Android开源项目时,尽管运行了alias python=python3
,我还是得到了SyntaxError
(来自基本上相同的脚本行(。(shebang似乎不会影响测试或主脚本。(
我错过了什么?如何使用正确版本的python3运行此脚本?假设有一个变通方法,我该如何在之后进行清理,以便系统的其他部分在需要时仍然可以访问python2?
alias
仅更改直接键入shell的命令的解释。因此repo
不受影响,因为它不会在shell中键入python命令。
通常,运行与系统不同的Python配置的最佳方式是使用virtualenv。