我有一个模块,它包装了另一个模块,以便在某些函数中插入一些填充逻辑。包装的模块使用了一个设置模块mod.settings
,我想公开它,但是我不想让用户从那里导入它,以防将来我想在那里填充一些东西。我要他们导入wrapmod.settings
。你知道吗
导入模块并导出它是可行的,但是在客户端有点冗长。它导致必须写settings.thing
,而不是只写thing
。你知道吗
我希望用户能够执行from wrapmod.settings import *
,并获得与执行from mod.settings import *
相同的结果,但现在,只有from wrapmod import settings
可用。我该如何解决这个问题?你知道吗
如果我正确地理解了这种情况,那么您正在编写一个模块
wrapmod
,用于转换现有包的部分mod
。您要转换的特定部分是子模块mod.settings
。您已经导入了settings
模块并对其进行了更改,但是即使它作为wrapmod.settings
可用,也不能在from ... import ...
语句中使用该模块名称。你知道吗我认为最好的解决方法是将修改后的模块插入到
sys.modules
中的新虚线名称下。这使得Python接受该名称为有效的,即使wrapmod
不是真正的包。你知道吗所以
wrapmod
看起来像:我最终为一个瘦包装器模块制作了一个代码生成器,因为
sys.module
黑客攻击破坏了所有IDE集成。你知道吗当作为脚本运行时,输出的代码可以附加到此文件的末尾。你知道吗
相关问题 更多 >
编程相关推荐