python idle editor没有自动完成列表来自import / as

时间:2014-09-02 09:16:14

标签: python windows import autocomplete python-idle

问题:

当我在开始时添加import winreg as wr时,自动完成功能适用于winreg。但不是为了。

我尝试了什么

  • 等待2秒或按Control + Space以触发点
  • 后的自动完成框
  • 卸载(python 2.7和3.4)并重新安装(pyton 3.4),因为我的第一个python是2.7并且我更改了一堆reg条目以从2.7切换到3.4
  • 在shell窗口自动完成winreg工作,甚至没有导入它,我输入为wr后,自动完成为wr。工作,但为什么它不会使用IDLE编辑器?
  • 创建了一个新的.py文件并测试了import / as
  • 在我的胜利7上尝试过,赢得8台PC,同样的问题

版本

  • Python 3.4
  • IDLE 3.4
  • 赢7/8

样品

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(轻量级)或更好的自动完成插件吗?

如果您需要任何其他信息,请告诉我。

提前致谢

1 个答案:

答案 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'可能不会被包含或者可能指向错误的对象。所以,没有我可以重现的实现错误,但我希望改进设计。