Spyder的UMD对我来说通常很棒,但在编写一个我不想删除和重新加载的模块时,我会定期绊倒自己。我知道我可以通过Tools > Preferences > Console > Advanced settings > User Module Deleter控制UMD。但我也希望能够在模块本身的代码中将我编写的某些模块标记为非UMD友好。
在一个完美的世界里,我会写一些类似
的东西assert_no_umd()
如果模块被UMD命中,会抛出异常。如果通过任何重新加载模块来触发代码,无论是通过UMD还是其他方式,都可以。
请注意,这与Method that gets called on module deletion in Python不同,因为该问题是关于清理数据库连接,只需要执行一次,因此可以使用atexit
完成。
答案 0 :(得分: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!!')