0

Spyder 的 UMD 通常对我来说非常有用,但是在编写不想删除和重新加载的模块时,我会定期自己绊倒。我知道我可以通过Tools > Preferences > Console > Advanced settings > User Module Deleter来控制 UMD 。但我也希望能够在模块本身的代码中将我编写的某些模块标记为非 UMD 友好。

在一个完美的世界里,我会写一些类似的东西

assert_no_umd()

如果模块被 UMD 击中,这将引发异常。如果代码因模块的任何重新加载(无论是通过 UMD 还是其他方式)而跳闸,那就没问题了。

请注意,这与在 Python 中删除模块时调用的 Method不同,因为该问题是关于清理数据库连接,它只需要完成一次,因此可以使用atexit.

4

1 回答 1

1

Spyder dev here)如果我理解正确,这将是我的assert_no_umd功能:

import os

def assert_no_umd():
    mod = __file__
    if os.environ.get("UMD_ENABLED", "").lower() == "true":
        namelist = os.environ.get("UMD_NAMELIST", None)
        if namelist is not None:
            namelist = namelist.split(',')
            if mod not in namelist:
                 raise ValueError('UMD active!!')
于 2013-12-05T22:38:43.143 回答