当我在开始时添加import winreg as wr
时,自动完成功能适用于winreg。但不是为了。
import winreg as wr
#IDLE behavior: bad
winreg. #autocomplete box is shown
wr. #no autocomplete box
#Runtime behavior: good
print(wr.REG_LINK) #no error, prints 6
print(winreg.REG_LINK) #raises exception, which is good
这是一个错误还是我做错了什么,我可以解决吗?
你能为推荐的++推荐另一个python IDE(轻量级)或更好的自动完成插件吗?
如果您需要任何其他信息,请告诉我。
提前致谢
答案 0 :(得分:0)
问题是命名空间的内容,其中要评估要完成的名称。它目前是用户进程中sys.modules和globals内容的组合(如果有),否则为空闲进程。有关更多信息,请参阅此CPython tracker issue。另请参阅帮助/空闲帮助中的提示下的完成情况。我不确定你做了什么,但这是我得到的,它对应于文档。
在win7上安装了3.4.1,在Shell中。
>>> winreg.
这是有效的,因为Idle on Windows导入了winreg。它在sys.modules中,即使它不在globals中。我认为这部分是一个错误,但我知道sys.modules用作部分解决方案,而不是更好的解决方案。
>>> wr.
不起作用,因为'wr'不在sys.modules中(从不会出现),也不在globals()中。
>>> import winreg as wr
在交互模式下,立即执行此操作并将'wr'添加到全局变量。
>>> wr.
现在有效,因为'wr'现在在全局变量中。
现在,在一个文件中:
import winreg as wr
这不会立即执行。
wingreg.
对我有用,原因和以前一样,所以我不理解你的报告。
wr.
对我来说不起作用,原因和以前一样。现在删除这两行并运行该文件。现在。确实有效,因为运行该文件会向全局变量添加'wr'。但是运行另一个文件会重置全局变量并且'wr'可能不会被包含或者可能指向错误的对象。所以,没有我可以重现的实现错误,但我希望改进设计。