Python / Pycharm,Ctrl-Space不会带来代码完成

时间:2013-01-30 19:03:22

标签: python code-completion pycharm

我有以下文件。当我在“r。”之后按Ctrl-Space时,为什么代码完成不会运行?它在红色框中说“没有建议”。

(该程序正在运行并推出:200)

__author__ = 'hape'

import urllib.request
import urllib.response

print("Starting")
r = urllib.request.urlopen("http://www.python.org")

r.  <------------ No code completion, why not?!

print (r.getcode())

r.之后,代码完成没有弹出,为什么?

4 个答案:

答案 0 :(得分:3)

答案 1 :(得分:3)

从JetBrains添加响应: @CrazyCoder就在那里。问题是我们无法推断函数“urllib.request.urlopen()”的正确返回类型,因为它的实现使用了一些我们无法静态处理的动态技巧,特别是:

通常,我们处理在python-skeleton中使用外部注释的困难情况,但它不包含“urllib.request”模块的类型提示。同样在即将推出的PyCharm版本中,我们计划切换到在类型化项目中收集的注释集合。它发展得更加积极,并且已经包含了一些“urllib”的注释。要从中受益,您只需要在解释器路径中的某处删除带有注释的“urllib”包,这样PyCharm就可以找到相应的.pyi存根。

Screen Shot from JB

答案 2 :(得分:1)

检查IDE是否处于省电模式。如果是,则没有代码完成过程或任何其他后台进程工作

它在IDE底部的状态栏中显示它

答案 3 :(得分:0)

@CrazyCoder是对的。现在,Pycharm并不知道r的类型。

如果你真的想自动完成,首先使用IPython或者调试

获取r的类型
# IPython

In [1]: import urllib.request

In [2]: r = urllib.request.urlopen("http://www.python.org")

In [3]: type(r)
Out[3]: http.client.HTTPResponse

然后使用Python3 Annotations

r: http.client.HTTPResponse = urllib.request.urlopen("http://www.python.org")
r.  

现在,你可以得到

python annotation for http.client.HTTPResponse