python运行时改变module属性

在使用twilio发送短信的时候,官方文档是写支持2.6,但是在实际编写代码的过程中,发现对2.6的兼容并不是那么好,有些模块使用了只有2.7才识别的代码,于是着手对其进行兼容,修改源码不是什么好方法,在我们的代码中去做兼容。
第一类兼容是修改函数定义,把部分不兼容的语法修正,这种还好,import之后使用setattr直接定义新逻辑,当做到有一个函数时,duang的一下,语法错误。。。

def of(d):
    return {k: v for k, v in iteritems(d) if v != unset}

2.6中会认为这样构造字典是语法不正确,import就挂了,也不能import之后再修改了,查了好旧,终于找到大神的回复,先自定义个module,吧这个函数所在的文件用符合当前环境的语法写好,然后用sys.modules指定路径

sys.modules['package.amodule']=__import__('your_module')
#做了上面的定义
#再form package import amodule就是使用的自己写的your_module中的内容了
后来了解了一下,python会缓存import的模块,下次再import就不从文件加载,直接从缓存使用,这里就是先将我们的模块重命名指定的模块名,再手动加入到缓存,这样真正要使用的时候,就从我们定义的模块中加载了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,111评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,083评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,636评论 4 61
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,126评论 18 399
  • 时下的家长,谈起青春期就博然色变,或苦恼或痛苦。套用托尔斯泰的名言,有青春期少年的家庭是相似的,没有青春期少年的家...
    胡喜平阅读 3,717评论 0 0

友情链接更多精彩内容