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()

(これは賢人のための開発環境なので、ハッキーなソリューションについて怒鳴らないでください)

そして私のモジュールでは__init__.py

import Repository

__all__ = ['Repository']

print "yap loaded"

これは、(セージセル内の)最初のコードブロックを評価するたびに「yaploaded」を出力するため、モジュールは毎回実際にリロードされます。

私が今達成したい__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 に答える