2013-03-02 50 views
1

Python程序如何確定它是否作爲Unix系統上的可執行文件執行,而不是作爲腳本調用?區分腳本何時直接運行或與Python可執行文件

./program.py 

代替

python ./program.py 
sys.argv[0]

'/程序' 不能在示例情況之間進行區分。

+0

我不相信這是可能的。 Unix並沒有區分這兩種情況,當shell遇到'#!/ usr/bin/env python' shebang行時,它只會執行'python program.py'。 – millimoose 2013-03-02 00:10:04

+1

這些知識會解決什麼類型的問題?你真的想完成什麼? – 2013-03-02 00:25:36

回答

1

一種略爲hackish的解決方案將在被program.py增加指示這shebang行環境變量:

#!/usr/bin/env noscript=True python 
import os 
if os.getenv('noscript'): 
    print("called as executable") 
else: 
    print("called as script") 
0

真的是沒有區別。如果你設置了可執行文件位,那麼os最終會完成你在命令行上的操作 - 它確實是python script.py。唯一的區別是,os看着從#!開始的第一行,以精確確定要運行的python版本。

相關問題