0

我尝试检查当前版本是否为 3,如果是,则切换到 python2:

#!/usr/bin/python

import sys, os

if sys.version_info[0] != 2:
    os.execl("/usr/bin/", "python2", *sys.argv)

print(sys.version_info[:])

但是这个脚本返回这个错误:

Traceback (most recent call last):
  File "./a.py", line 6, in <module>
    os.execl("/usr/bin/", "python2", *sys.argv)
  File "/usr/lib/python3.3/os.py", line 531, in execl
    execv(file, args)
PermissionError: [Errno 13] Permission denied

我错过了什么?

4

2 回答 2

2

os.execl("/usr/bin/", "python2", *sys.argv)

/usr/bin/ 是一个目录,你不能运行它。尝试:

os.execl("/usr/bin/python2", "/usr/bin/python2", *sys.argv[1:])

于 2013-01-22T10:46:55.217 回答
0

我会争辩说你正在尝试的是一个坏主意 - 这是令人惊讶的行为并且不需要,相反,只需使用显式的 hashbang:

#!/usr/bin/python2

或者,最好:

#!/usr/bin/env python2

根据PEP 394,任何 unix 系统都应提供python2.

于 2013-01-22T10:45:16.063 回答