在运行时从Python 3切换到2

时间:2013-01-22 10:33:08

标签: python python-3.x python-2.7 os.execl

我尝试检查当前版本是否为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

我错过了什么?

2 个答案:

答案 0 :(得分:2)

  
    

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

  

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

  
    

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

  

答案 1 :(得分:0)

我认为你所尝试的是一个坏主意 - 这是令人惊讶的行为,而不需要,而只是使用一个明确的hashbang:

#!/usr/bin/python2

或者,最好是:

#!/usr/bin/env python2

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