我有以下文件。当我在“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.
之后,代码完成没有弹出,为什么?
答案 0 :(得分:3)
您是否查看过Pycharm页面以了解编辑器代码完成设置?
http://www.jetbrains.com/pycharm/webhelp/editor-code-completion.html
启用智能型代码完成?
答案 1 :(得分:3)
从JetBrains添加响应: @CrazyCoder就在那里。问题是我们无法推断函数“urllib.request.urlopen()”的正确返回类型,因为它的实现使用了一些我们无法静态处理的动态技巧,特别是:
通常,我们处理在python-skeleton中使用外部注释的困难情况,但它不包含“urllib.request”模块的类型提示。同样在即将推出的PyCharm版本中,我们计划切换到在类型化项目中收集的注释集合。它发展得更加积极,并且已经包含了一些“urllib”的注释。要从中受益,您只需要在解释器路径中的某处删除带有注释的“urllib”包,这样PyCharm就可以找到相应的.pyi存根。
答案 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.
现在,你可以得到