2012-04-27 69 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__) 

,并应解决您的问题。

相关问题