Cómo usar el getpass.getpass de Python en PyCharm

He encontrado que getpass no funciona en PyCharm. Simplemente se cuelga.

De hecho, parece que msvcrt.getch y raw_input tampoco funcionan, así que quizás el problema no sea con getpass. En cambio, con el bit ‘i’ del manejo de stdio de PyCharm.

El problema es que no puedo poner mi contraseña personal en el código, ya que terminaría en SVN que sería visible para otras personas. Así que uso getpass para obtener mi contraseña cada vez.

En la búsqueda, todo lo que puedo encontrar es que “Pycharm hace el pirateo para hacer que Django trabaje con getpass”, pero no hay ninguna pista sobre qué es ese hackeo …

He examinado getpass y usa msvcrt en Windows (por lo que este problema podría estar solo en Windows)

Mi pregunta es: ¿Hay un lugar de trabajo para este problema?

Me he encontrado con este ejecutando Pycharm CE 4.5 en Windows. La solución alternativa que utilizo es ejecutar su progtwig en modo de depuración, luego obtiene una pestaña de la consola donde puede ingresar su contraseña cuando usa getpass.

Para PyCharm 2018.3

Vaya a ‘Editar configuraciones’ y luego seleccione ‘Emular terminal en la consola de salida’.

Una solución común a esto sería almacenar las credenciales en un archivo que usted marca ignorado por su VCS. Entonces solo

with open('credentials.txt') as f: user, pw = f.read().split('\n') # or similar 

Alternativamente, tenerlos especificados en las variables de entorno. Ambos métodos deberían funcionar en torno al manejo de stdin por parte de PyCharm.

Desafortunadamente, getpass () tiende a fallar miserablemente (lo probé con IDLE y PyScripter sin ningún éxito en Python 3.4). Yo sugeriría usar passwordbox de easygui – funciona maravillosamente siempre y cuando no use ver. 0.98 (algo está estropeado allí), es seguro usar ver. 0.96.

Descargar easygui ver. 0.96, descomprímalo en una carpeta temporal y, desde esa carpeta, instálelo con:

 python setup.py install 

y use passwordbox en su progtwig:

 from easygui import passwordbox password = passwordbox("PASSWORD:")