Я пытаюсь проверить, если текущая версия 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

Что я пропустил?

0
ciembor 22 Янв 2013 в 14:33

2 ответа

Лучший ответ

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

/ usr / bin / - это каталог, вы не можете его запустить. Пытаться:

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

2
user9876 22 Янв 2013 в 10:46

Я бы сказал, что то, что вы пытаетесь сделать, является плохой идеей - это удивительное поведение и не нужно, вместо этого просто используйте явный hashbang:

#!/usr/bin/python2

Или предпочтительно:

#!/usr/bin/env python2

Согласно PEP 394, любая система Unix должна предоставлять python2.

0
Gareth Latty 22 Янв 2013 в 10:45