0

在我的客户代码中,我有:

import sys
import os
YAP_PATH = "/package/src/python"
if YAP_PATH not in sys.path:
    sys.path.append(YAP_PATH)

if 'yap' in sys.modules:  
    reload(yap)

import yap

print "working dir", os.getcwd()

(这是sage的开发环境,所以不要对hacky解决方案大喊大叫)

在我的模块中__init__.py

import Repository

__all__ = ['Repository']

print "yap loaded"

每次我评估第一个代码块(在圣人单元中)时,这都会打印“yap loaded”,因此每次都会真正重新加载模块。

我现在想要实现的__init__.py是每次重新加载模块时,Repository也要重新加载类。

如何做到这一点,而不将代码放在鼠尾草单元中,而是放在__init__.py文件中?

4

1 回答 1

0

得到它的工作,也许有人觉得它有帮助:

from Repository import Repository

__all__ = ['Repository']

def main(path):
    import sys
    _module_ = sys.modules[__name__]
    if hasattr(_module_, 'WORKING_PATH'):
        for m in __all__:
            if __name__ + "." + m in sys.modules:
                m = sys.modules[__name__ + "." + m]
                reload(m)
    else:
        _module_.WORKING_PATH = path

if __name__ == 'yap':
    print "yap loaded"

欢迎补丁

于 2012-12-02T17:22:23.333 回答