2016-06-10 65 views
0

我有一個python代碼,我希望它堅持與python3。但有時我忘了這是一個python3代碼一樣,運行它:自動從python切換到python3的優雅方式

$ python foo.py 

我採取這樣的策略:

#!/usr/bin/python3 
# -*- coding: utf-8 -*- 
import sys,os,warnings 

if sys.version_info < (3,0): 
    sys.argv.insert(0,__file__) 
    warnings.warn("Switch back to python3 automatically") 
    os.execv("/usr/bin/python3",sys.argv) 

是否有任何優雅的方式做同樣的事情?

+2

既然你把'#!/ usr/bin/python3'直接用'./foo.py'啓動它。 – polku

+1

如果您需要Python3:不要奇蹟般地重新執行腳本,這會導致各種破壞。只是讓腳本呱呱叫而死。 – dhke

+0

@polku我知道。但是代碼是主程序的一個模塊,if __name__ ==「__main__」下面有一些測試用例。我不會「chmod + x」它。我用「python3 foo.py」來測試它。 – wonghang

回答

0

如果你不想讓它可執行文件,那麼你可以創建一個小腳本run_foo.sh

#!/bin/sh 
python3 foo.py 

然後

./run_foo.sh 

我認爲它仍然比在execv越好代碼爲個人方便。