PyDev import 问题

2019-02-17  本文已影响0人  clive0x

习惯了VS写C#、Eclipse写JAVA,写Python代码时,Ipython的自动联想功能也爽,几乎不会有啥意外。用IDE如PyDev和Pycharm写代码时,自动联想功能傻了……

如用Pwntools包和Tensorflow包,import时__init__.py经常由于Name Confusion导致自动联想失效。

折腾了一个晚上,终于找到解决问题方法了。通常包都会引入名字到全局命名空间,如import tensorflow as tf,from pwn import * ,避开名称空间的方法是把tensorflow或者pwn加入到bullins,eclipse中操作windows>Preferences>Pydev>Interpreters>Python Interpreter>Forced Builtins。

builtin 通俗理解为Python内置对象。如abs()、sum()等。

Python2 的__builtins__与__builtin__区别:

1.如果在main module,__builtins__ = __builtin__

2.如果其它module,__builtins__  = __builtins__.__dict__

__builtins__ 是Python解释器用来加载__builtin__空间对象的,并设置名称引用至后者。

Python3 __builtin__改名为builtins。

Python可动态修改的东西太多了,用来藏病毒,可以藏很深。这玩意比Java classpath还复杂,Java classpath通过双亲委托查找路径很清淅,话说java动态修改classpath最牛B的项目就是sqoop1。

上一篇下一篇

猜你喜欢

热点阅读