Web2Py:不跟踪模块之间的变化

Web2Py: Not track changes between modules

我有两个协同工作的模块。

比如我有user.pyemail.pyuser.py有验证注册的功能,email.py有发送确认邮件的功能。我在控制器中导入 user.py,然后 user.py 导入 email.py.

与:

from gluon.custom_import import track_changes
track_changes(True)

我在 user.py 中检测到变化,但在 email.py 中没有检测到变化。我试着把 track_changes 也放在 user.py 中,但它不起作用。

有什么我可以在不重启的情况下做的事情吗server/web2py?

Web2Py:2.16.1-stable+timestamp.2017.11.14.05.54.25(我尝试使用 *.exe 和 *.py)

OS: Windows 10 专业版

谢谢!

web2py 使用自定义导入程序,它首先尝试通过标准 Python 内置方法导入模块,然后仅当内置方法失败时才在应用程序的 /modules 文件夹中查找。只有通过此自定义导入过程找到的模块是可跟踪的。

因为 user.py 已经导入并且 email.py 与 user.py 在同一个文件夹中,Python 内置导入方法知道在同一个目录中查找email 模块在 user.py 文件中遇到 import email 时的文件夹。因此,web2py 自定义导入过程不会启动,因此不会跟踪模块。

我想这个行为可以改变,但现在,它是这样工作的,所以你的第二次导入不会被跟踪。

我在进行更改后无法重新导入模块时遇到了很多问题。 track_changes 从来没有为我工作过。最后,我将其添加到我的 db.py 文件中。

import importlib
import sys
# Now import all your modules
import Common
importlib.reload(sys.modules['Common'])

这对我来说效果很好。我知道它应该在投入生产时被删除。