Python / Pycharm, Ctrl-Space no muestra la finalización del código

Tengo el siguiente archivo. ¿Por qué no se ejecuta la terminación del código cuando presiono Ctrl-Space después de la “r”? Dice “no sugerencia” en una caja roja.

(El progtwig como se ejecuta y saca: 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()) 

Después de la r. , la finalización del código no aparece, ¿por qué?

¿Has mirado la página de Pycharm para la configuración de finalización del código del Editor?

http://www.jetbrains.com/pycharm/webhelp/editor-code-completion.html

¿Habilitando el código de tipo inteligente?

http://www.jetbrains.com/pycharm/webhelp/smart-type-code-completion-completing-code-based-on-type-information.html

Agregando respuesta de JetBrains: @CrazyCoder estaba ahí. El problema es que no podemos inferir el tipo de retorno adecuado de la función “urllib.request.urlopen ()” ya que su implementación utiliza algunos trucos dynamics que no podemos manejar de forma estática, en particular:

Normalmente, tratamos casos difíciles como el uso de anotaciones externas en esqueletos de Python, pero aún no contiene sugerencias de tipo para el módulo “urllib.request”. También en las próximas versiones de PyCharm estamos planeando cambiar a la recostackción de anotaciones recostackdas en un proyecto tipográfico. Se desarrolla mucho más activamente y ya contiene algunas anotaciones para “urllib”. Para beneficiarse de ellos, solo tiene que soltar el paquete “urllib” con anotaciones en algún lugar de las rutas de su intérprete, para que PyCharm pueda encontrar los respectivos talones .pyi.

Captura de pantalla de JB

Compruebe si el IDE está en modo de ahorro de energía. Si es así, entonces ningún proceso de finalización de código o cualquier otro proceso en segundo plano funciona

Se muestra al respecto en la barra de estado en la parte inferior del IDE.

@CrazyCoder tenía razón. Ahora, Pycharm no conoce el tipo de r .

Si realmente te gusta la finalización automática, primero obtén el tipo de r usando IPython o depuración

 # 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 

A continuación, utilice Anotaciones Python3

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

Ahora puedes conseguir

anotación python para http.client.HTTPResponse