Pyflakes e ошибка

Hi @luislevill.

This is not an issue with python-mode (the tool) itself, it is a python coding problem, so I’d suggest you to look for help in a more proper place (stackoverflow, python forums, python communities on slack/discord, etc).

If we start handling python coding issues in this issue tracker, other than problems with python-mode itself, we would end up being overloaded with such kind of request.

else:

    tution =7230+21+3+5

elif(credit > 18):
    
if(level =='freshman'):

    if(madisoncollege == 'yes'):

tution = 7230+21+3+5+7.50+((credit-18)*482)

else:

Вот кусок моего кода. Я использую IDE Spyder. На линии

elif(credit > 18):

Я получаю сообщение об ошибке «Недопустимый синтаксис (pyflakes E)». Я не уверен, что с ним не так, и мне кажется, что это может быть связано со Spyder. Любые идеи?

3 ответа

Вам следует попробовать сделать отступ в коде ниже elif, это должно решить проблему, также помните, что вы не можете оставить блок пустым в python без использования ключевого слова pass.


0

Khwarz
28 Сен 2021 в 04:22

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


-1

Aditya Nathireddy
13 Апр 2022 в 15:54

Иногда вам просто нужно снова проверить свой код; мгновенно, когда это ошибка (pyflakes E ), или попробуйте идентифицировать код под elif, это, безусловно, должно помочь…


-2

Mohamed Aly Abdelbaky
21 Авг 2022 в 16:46

In the code below I get the error «invalid syntax pyflakes e» for the line «%matplotlib inline». I am trying to develop a support vector machine

https://www.kaggle.com/uciml/pima-indians-diabetes-database (database used)

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, confusion_matrix
%matplotlib inline
Next, we will read in the data set and split it into training and testing sets:
# read in the data set
df = pd.read_csv('diabetes.csv')
# split into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(df.drop('Outcome', axis=1), df['Outcome'], test_size=0.2, random_state=42)
Now, we will train a support vector machine on the training set and make predictions on the testing set:
# train a support vector machine
svm = SVC()
svm.fit(X_train, y_train)
# make predictions on the testing set
y_pred = svm.predict(X_test)
Finally, we will evaluate the accuracy of our model and visualize the confusion matrix:
# evaluate the accuracy
accuracy = accuracy_score(y_test, y_pred)
print(accuracy)
# visualize the confusion matrix
cm = confusion_matrix(y_test, y_pred)
plt.imshow(cm, cmap='Blues')
plt.title('Confusion Matrix')
plt.xlabel('Predicted Class')
plt.ylabel('Actual Class')
plt.show()

I was expecting to develop a support vector machine

Анализ кода в Python может быть трудной темой, но очень полезной в тех случаях, когда вам нужно повысить производительность вашей программы. Существует несколько анализаторов кода для Python, которые вы можете использовать для проверки своего кода и выяснить, соответствует ли он стандартам. Самым популярным можно назвать pylint. Он очень удобен в настойках и подключениях. Он также проверяет ваш код на соответствие с PEP8, официальным руководством по стилю ядра Python, а также ищет программные ошибки. Обратите внимание на то, что pylint проверяет ваш код на большую часть стандартов PEP8, но не на все. Также мы уделим наше внимание тому, чтобы научиться работать с другим анализатором кода, а именно pyflakes.

Начнем с pylint

Пакет pylint не входит в Python, так что вам нужно будет посетить PyPI (Python Package Index), или непосредственно сайт пакета для загрузки. Вы можете использовать следующую команду, которая сделает всю работу за вас:

Если все идет по плану, то pylint установится, и мы сможем пойти дальше.

Анализ вашего кода

После установки pylint вы можете запустить его в командной строке, без каких либо аргументов, что бы увидеть, какие опции он принимает. Если это не сработало, можете прописать полный путь, вот так:

c:Python34Scriptspylint

Теперь нам нужен какой-нибудь код для анализа. Вот часть кода, которая содержит четыре ошибки. Сохраните её в файле под названием crummy_code.py:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

import sys

class CarClass:

    «»»»»»

    def __init__(self, color, make, model, year):

        «»»Constructor»»»

        self.color = color

        self.make = make

        self.model = model

        self.year = year

        if «Windows» in platform.platform():

            print(«You’re using Windows!»)

        self.weight = self.getWeight(1, 2, 3)

    def getWeight(this):

        «»»»»»

        return «2000 lbs»

Можете увидеть ошибки не запуская код? Давайте посмотрим, может ли pylint найти их!

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

После запуска этой команды вы увидите большую выдачу на вашем экране. Вот частичный пример:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

c:py101>c:Python34Scriptspylint crummy_code.py

No config file found, using default configuration

************* Module crummy_code

C: 2, 0: Trailing whitespace (trailing-whitespace)

C: 5, 0: Trailing whitespace (trailing-whitespace)

C: 12, 0: Trailing whitespace (trailing-whitespace)

C: 15, 0: Trailing whitespace (trailing-whitespace)

C: 17, 0: Trailing whitespace (trailing-whitespace)

C: 1, 0: Missing module docstring (missing-docstring)

C: 3, 0: Empty class docstring (empty-docstring)

C: 3, 0: Old-style class defined. (old-style-class)

E: 13,24: Undefined variable ‘platform’ (undefined-variable)

E: 16,36: Too many positional arguments for function call (too-many-function-args)

C: 18, 4: Invalid method name «getWeight» (invalid-name)

C: 18, 4: Empty method docstring (empty-docstring)

E: 18, 4: Method should have «self» as first argument (no-self-argument)

R: 18, 4: Method could be a function (no-self-use)

R: 3, 0: Too few public methods (1/2) (too-few-public-methods)

W: 1, 0: Unused import sys (unused-import)

Давайте немного притормозим и разберемся. Сначала нам нужно понять, что означают буквы:

  • С – конвенция (convention)
  • R – рефакторинг (refactor)
  • W – предупреждение (warning)
  • E – ошибка (error)

Наш pylint нашел 3 ошибки, 4 проблемы с конвенцией, 2 строки, которые нуждаются в рефакторинге и одно предупреждение. Предупреждение и 3 ошибки – это как раз то, что я искал. Мы попытаемся исправить этот код и устранить ряд проблем. Для начала мы наведем порядок в импортах, и изменить функцию getWeight на get_weight, в связи с тем, что camelCase не используется в названиях методов. Нам также нужно исправить вызов get_weight, чтобы он передавал правильное количество аргументов и исправить его, чтобы “self” выступал в качестве первого аргумента. Взглянем на новый код:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

# crummy_code_fixed.py

import platform

class CarClass:

    «»»»»»

    def __init__(self, color, make, model, year):

        «»»Constructor»»»

        self.color = color

        self.make = make

        self.model = model

        self.year = year

        if «Windows» in platform.platform():

            print(«You’re using Windows!»)

        self.weight = self.get_weight(3)

    def get_weight(self, this):

        «»»»»»

        return «2000 lbs»

Давайте запустим новый код с pylint и посмотрим, насколько успешно мы провели работу. Для краткости, мы еще раз рассмотрим первую часть:

c:py101>c:Python34Scriptspylint crummy_code_fixed.py

No config file found, using default configuration

************* Module crummy_code_fixed

C: 1,0: Missing docstring

C: 4,0: CarClass: Empty docstring

C: 21,4: CarClass.get_weight: Empty docstring

W: 21,25: CarClass.get_weight: Unused argument ‘this’

R: 21,4: CarClass.get_weight: Method could be a function

R: 4,0: CarClass: Too few public methods (1/2)

Как мы видим, это очень помогло. Если мы добавим docstrings, мы можем снизить количество ошибок вдвое. Теперь мы готовы перейти к pyflakes!

Работаем с pyflakes

Проект pyflakes это часть чего-то, что называется Divmod Project. Pyflakes на самом деле не выполняет проверяемый код также, как и pylint. Вы можете установить pyflakes при помощи pip, easy_install, или из другого источника.

Данный сервис может предложить Вам персональные условия при заказе классов на посты и фото в Одноклассники. Приобретайте необходимый ресурс не только со скидками, но и с возможностью подобрать наилучшее качество и скорость поступления.

Мы начнем с запуска pyflakes в изначальной версии той же части кода, которую мы использовали для проверки pylint. Вот и он:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

import sys

class CarClass:

    «»»»»»

    def __init__(self, color, make, model, year):

        «»»Constructor»»»

        self.color = color

        self.make = make

        self.model = model

        self.year = year

        if «Windows» in platform.platform():

            print(«You’re using Windows!»)

        self.weight = self.getWeight(1, 2, 3)

    def getWeight(this):

        «»»»»»

        return «2000 lbs»

Как мы отмечали в предыдущем разделе, в этом поломанном коде четыре ошибки, три из которых препятствуют работе программы. Давайте посмотрим, что же pyflakes может найти. Попытайтесь запустить данную команду и на выходе вы должны получить следующее:

c:py101>c:Python34Scriptspyflakes.exe crummy_code.py

crummy_code.py:1: ‘sys’ imported but unused

crummy_code.py:13: undefined name ‘platform’

Несмотря на суперски быструю скорость возврата выдачи, pyflakes не нашел все ошибки. Вызов метода getWeight передает слишком много аргументов, также метод getWeight сам по себе определен некорректно, так как у него нет аргумента self. Что-же, вы, собственно, можете называть первый аргумент так, как вам угодно, но в конвенции он всегда называется self. Если вы исправили код, оперируя тем, что вам сказал pyflakes, код не заработает, несмотря на это.

Подведем итоги

Следующим шагом должна быть попытка запуска pylint и pyflakes в вашем собственном коде, либо же в пакете Python, вроде SQLAlchemy, после чего следует изучить полученные в выдаче данные. Вы можете многое узнать о своем коде, используя данные инструменты. pylint интегрирован с Wingware, Editra, и PyDev. Некоторые предупреждения pylint могут показаться вам раздражительными, или не особо уместными. Существует несколько способов избавиться от таких моментов, как предупреждения об устаревании, через опции командной строки. Вы также можете использовать -generate-rcfile для создания примера файла config, который поможет вам контролировать работу pylint. Обратите внимание на то, что pylint и pyflakes не импортируют ваш код, так что вам не нужно беспокоиться о нежелательных побочных эффектах.

Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.

E-mail: vasile.buldumac@ati.utm.md

Образование
Universitatea Tehnică a Moldovei (utm.md)

  • 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
  • 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»

Pyflakes reports an invalid syntax error in a print (to file) command in a class method. Here is the code:

class Controller():
    def __init__(self):
        self.base_url = ''
        self.permissions = None
        self.url = ''
        self.description = ''
        self.requests = ''
        self.url_params = ''
        self.data = ''
        self.response = ''
        self.pagination = ''
        self.cmd_file = None
        self.json_file = None
        self.html_file = None
        self.dict_file = None
        self.app_name = ''
        self.app = None
    def json_doc(self):
        if self.permissions:
            permissions = self.permissions + '.'
        else:
            permissions = ''
        print(
            '{n' 
            't"URL": "' + self.url + '",n' 
            't"Description": "' + self.description + '.",n' 
            't"Requests": "' + self.requests + '",n' 
            't"Permissions": "' + permissions + '",n' 
            't"URL Parameters": "' + self.url_params + '",n' 
            't"Data": "' + self.data + '",n' 
            't"Response": "' + self.response + '",n' 
            't"Pagination": "' + self.pagination + '"n' 
            '}', 
            file=self.json_file
        )

Here is the error:

curl_doc.py:79:17: invalid syntax
            file=self.json_file
                ^

json_file is set elsewhere in my code. It seems to be a problem with pyflakes as the code runs OK. The pyflakes command used was:

pyflakes curl_doc.py

Понравилась статья? Поделить с друзьями:
  • Pycrypto python ошибка
  • Pycharm ошибка сертификата
  • Pycharm ошибка при запуске
  • Pycharm ошибка интерпретатора
  • Pycharm ошибка traceback most recent call last