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

あなたが試みていることは悪い考えだと私は主張します-それは驚くべき動作であり、必要ではありません。代わりに、明示的なハッシュバンを使用するだけです:

#!/usr/bin/python2

または、できれば:

#!/usr/bin/env python2

PEP 394に従って、どの UNIX システムも を提供する必要がありますpython2

于 2013-01-22T10:45:16.063 に答える