2012-04-27 16 views
0

我有一個Python類,假設通過將自己提交到集羣環境來在後臺執行一些任務。例如Python腳本和類在同一個文件

class AwesomeTaskController(object): 
    def run(bunch_of_tasks): 
     for task in bunch_of_tasks: 
      cmd = "%s %s" % (os.path.abspath(__file__), build_cli_paramters(task)) 
      # call the API to submit the cmd 

if __name__ == "__main__": 
    #blah blah do stuff with given parameters 

所有這一切都是第一次,這個類是運行。當它第一次運行時,會創建一個pyc文件。這個pyc文件不可執行(權限明智)。

所以第二次我使用這個類,該命令將直接使用PYC和抱怨權限被拒絕。也許我從錯誤的角度來看待這個問題?

+0

什麼樣的集羣? – 2012-04-27 04:52:43

+0

我只知道我需要編寫腳本PBS他們。 – 2012-04-27 04:58:13

回答

0

pyc文件是不可執行的自己;你總是必須執行.py文件。該.pyc文件文件只是一個編譯了Python生成的飛行本身一段時間運行.py文件下一次保存.py文件的版本。

就你而言,你所需要做的就是檢查__file__是否以「.pyc」結尾並去掉尾隨的「c」。你可以做到這一點,比方說,在你的腳本替換__file__

(__file__[:-1] if __file__.endswith(".pyc") else __file__) 

,並應解決您的問題。

相關問題