Print [Python] рассматривается как ключевое слово в Pycharm

#python #python-3.x #pycharm

#python #python-3.x #pycharm

Вопрос:

Я использую Pycharm (2019.1.2 x64) довольно давно, и я никогда не менял стандартные настройки. Стандартные настройки отображают ключевые слова ( def , class , if ) оранжевым цветом, нажатие tab автоматически завершает ключевое слово и добавляет пробел, встроенные функции ( sum() , map() , print() ) отображаются фиолетовым цветом, а нажатие tab автоматически завершает имя функции, добавляет скобки и перемещает курсор внутри скобок.

Это желаемое поведение, и это то, что я получаю при открытии любого проекта в Pycharm, кроме одного.

В одном проекте это поведение внезапно изменилось, я ничего не делал, кроме написания и запуска кода. Я заметил, что из-за того, что tab внезапно начал отступать на 8 пробелов вместо 4, ничего страшного, я изменил его обратно на 4 в нижней части IDE, но я также заметил, что print это рассматривается как ключевое слово (оранжевое без скобок), а не как встроенная функция, как в Python2 (Я никогда не использовал его, и интерпретатором проекта был Python 3.7). from __future__ import print_function снова превратится print в функцию, но это материал Python2.

Я исправил это, создав новую виртуальную среду и снова настроив интерпретатор, поэтому мой вопрос: что вызывает это неожиданное поведение?

Я хотел бы избежать этого при работе над моими самыми «серьезными» проектами. Спасибо всем.

Комментарии:

1. Похоже на ошибку. Однако трудно ответить на этот вопрос без какой-либо информации о том, что вы на самом деле сделали непосредственно перед его изменением. Вы изменили конфигурацию запуска? Вы создали новый файл? Вы запустили приложение? Вы изменили какие-либо переменные среды?

2. Нет, этот проект — всего лишь несколько файлов на python, в которых я пишу решения проблем с таких сайтов, как hackerank или codility, так что это ванильный Python. Все, что я делаю, это пишу строки и запускаю их с помощью кнопки с зеленой стрелкой.

Ответ №1:

НОВЫЙ ОТВЕТ

Ну, это случилось со мной только вчера, когда я работал над своим проектом tkinter. Он показал tkinter в from tkinter import * «Модуле, не поддерживаемом в Python 2.7», хотя я использовал Python 3.8.

Решение первое

Чтобы исправить эту проблему, я просто перешел к

 File > Settings > Appearance and Behavior > System Settings > Updates
 

И обновил PyCharm до последней версии. У меня это сработало.

Решение второе

Другой метод, который я обнаружил, — перейти к

 Press Shift Key Twice > Typing "Restore Default Settings"
 

Выполнение этого также частично восстановит все настройки и решит проблему для меня.

Почему это произошло?

Это связано с ошибкой в более старых версиях PyCharm (вероятно). Я получил эту ошибку при тестировании некоторого API Google, который был в Python 2.7. Если вы когда-либо открывали проект, содержащий интерпретатор Python 2.7, и открывали другой проект на Python 3 и выше, PyCharm считает, что написанный код написан на Python 2.7, и просто форматирует руководство в соответствии с ним. Некоторым примером может быть "f" in print(f"{some_variable_here}") being shown as "Not Supported In Python 2.7". , что это всего лишь моя теория, возможно, я здесь совершенно не прав.

СТАРЫЙ ОТВЕТ

Используете ли вы macOS? если да, macOS поставляется с предустановленным Python 2. Так что, вероятно, это может быть ошибкой. Я предлагаю перейти в правый нижний угол, и там будет написано «Python (версия)». Если это что-то другое, чем 3 или выше (например, 2), щелкните по нему и перейдите в «Настройки интерпретатора» и там, в выпадающем меню, выберите другой интерпретатор Python, который установлен на вашем устройстве.

Если это не работает, то это может быть ошибка темы или что-то связанное с самим PyCharm (вероятно). Вероятно, переустановка и очистка кэша должны сработать.

Комментарии:

1. Нет, я не на Mac и у меня не установлен Python 2, код по-прежнему выполняется как Python 3, но Pycharm видит его как Python2, я решил это, думаю, я сообщу об этом как об ошибке в jetbrains

2. Извините, мне потребовалось некоторое время, чтобы ответить, но я сам застрял в поиске решений.