Как использовать Python getpass.getpass в PyCharm

Я нашел, что getpass не работает в PyCharm. Он просто висит.

На самом деле кажется, что msvcrt.getch и raw_input также не работают, поэтому, возможно, проблема не в том, чтобы пройти. Вместо этого с i-битом обработки PyCharm stdio.

Проблема в том, что я не могу поместить свой личный пароль в код, так как он окажется в SVN, который будет виден другим людям. Поэтому я каждый раз использую getpass для получения пароля.

В процессе поиска все, что я могу найти, это то, что "Pycharm делает взлом кулака, чтобы заставить Django работать с getpass", но не намек на то, что этот хак....

Я просмотрел getpass и использует msvcrt для Windows (так что эта проблема может быть только в Windows)

Мой вопрос: есть ли рабочая проблема для этой проблемы?

Ответ 1

Для PyCharm 2018.3

Перейдите в "Редактировать конфигурации" и затем выберите "Эмулировать терминал в выходной консоли".

Ответ 2

Я столкнулся с этим запущенным Pycharm CE 4.5 в Windows. Обходной путь, который я использую, заключается в том, чтобы запустить вашу программу в режиме отладки, затем вы получите вкладку консоли, где вы можете ввести свой пароль при использовании getpass.

Ответ 3

Общим решением для этого было бы хранить учетные данные в файле, который вы игнорируете своим VCS. Тогда просто:

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

В качестве альтернативы, укажите их в переменных среды. Оба этих метода должны работать с обработкой PyCharm stdin.

Ответ 4

К сожалению, getpass() имеет тенденцию терпеть неудачу (я тестировал его с IDLE и PyScripter без каких-либо успехов на Python 3.4). Я бы предложил использовать пароль из easygui - он отлично работает, если вы не используете ver. 0.98 (там что-то перепутано), безопасно использовать ver. 0.96.

Скачать easygui ver. 0.96, распакуйте его во временную папку, и из этой папки установите его с помощью:

python setup.py install

и используйте в своей программе пароль:

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

Ответ 5

В моем случае, даже после установки конфигурации " Эмулировать терминал в выходной консоли " getpass.getpass() не работал. Чтобы решить проблему, " Я установил конфигурацию для запуска с консоли Python " 1

Но теперь возникла другая проблема: консоль отображала пароль в консоли python. Если вы не хотите, чтобы это произошло, я рекомендую вам запустить программу с помощью терминала cmd или Linux. Вывод в терминале Linux выглядел так: 2