0

我有一个 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 并抱怨权限被拒绝。也许我从错误的角度接近这个?

4

1 回答 1

0

.pyc 文件本身不可执行;你总是必须执行 .py 文件。.pyc 文件只是 Python 动态生成的 .py 文件的编译版本,以便在下次运行 .py 文件时节省自己的时间。

在您的情况下,您需要做的就是检查是否__file__以“.pyc”结尾并删除尾随的“c”。例如,您可以通过__file__在脚本中替换为:

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

那应该可以解决您的问题。

于 2012-05-03T07:13:31.527 回答