0
に__init__.pyにsys.modules交換トリックを使うのですか私はhttps://stackoverflow.com/a/7668273/23845で説明sys.modules
交換トリックを使用しようとしましたが、それは、Python 2で、次の場合には動作しません。はどのように私はPythonの2
# a/__init__.py
import sys
class AMod(object):
def __init__(self, d):
self.__dict__ = d
sys.modules[__name__] = AMod(sys.modules[__name__].__dict__)
そして:
最後に# a/sub.py
import a
z = True
:
# b.py
import a.sub
これは、ウィットに失敗h:
pymodshenanigans ezyang$ python b.py
Traceback (most recent call last):
File "b.py", line 1, in <module>
import a.sub
RuntimeError: sys.path must be a list of directory names
これを行う方法はありますか? (これはPython 3で動作します)
さて、何が 'この時点でsys.path'されますか? – kindall
それは私のために働いています –
それを交換する前にモジュールへの参照を保持する必要があります。 https://stackoverflow.com/questions/5365562/why-is-the-value-of-name-changing-after-assignment-to-sys-modules-name – martineau