Почему python не запускает программу

Я с завидной регулярностью сталкиваюсь со всевозможными ошибками, так или иначе связанными с модулями Python. Существует огромное количество разнообразных модулей Python, которые разработчики активно используют, но далеко не всегда заботятся об установке зависимостей. Некоторые даже не удосуживаются их документировать. Параллельно существует две мажорные версии Python: 2 и 3. В разных дистрибутивах отдано предпочтение одной или другой версии, по этой причине самостоятельно установленную программу в зависимости от дистрибутива нужно при запуске предварять python или python2/python3. Например:

python2 mailfy.py

Причём обычно не происходит никаких проверок и угадали ли вы с выбором версии или нет вы узнаете только при появлении первых ошибок, вызванных неправильным синтаксисом программного кода для данной версии.

Также прибавляет путаницу то, что модули можно установить как из стандартного репозитория дистрибутивов, так и с помощью pip (инструмент для установки пакетов Python).

Как запускать программы на Python файлы .py в Windows 10

Цель этой заметки — рассмотреть некоторые характерные проблемы модулей Python. Все возможные ошибки вряд ли удастся охватить, но описанное здесь должно помочь понять, в каком примерно направлении двигаться.

Отсутствие модуля Python

Большинство ошибок модулей Python начинаются со строк:

Exception: Traceback (most recent call last): File «/usr/lib/python2.7/site-packages/………. ……………… ………………

В них трудно разобраться, поэтому поищите фразы вида:

  • ModuleNotFoundError: No module named
  • No module named
  • ImportError: No module named

За ними следует название модуля.

Поищите по указанному имени в системном репозитории, или попробуйте установить командой вида:

sudo pip install модуль

Пакет Python установлен, но программа его не видит

Причина может быть в том, что вы установили модуль для другой версии. Например, программа написана на Python3, а вы установили модуль с этим же названием, но написанный на Python2. В этом случае он не будет существовать для программы. Поэтому нужно правильно указывать номер версии.

Команда pip также имеет свои две версии: pip2 и pip3. Если версия не указана, то это означает, что используется какая-то из двух указанных (2 или 3) версий, которая является основной в системе. Например, сейчас в Debian и производных по умолчанию основной версией Python является вторая. Поэтому в репозитории есть два пакета: python-pip (вторая версия) и python3-pip (третья).

Читайте также:
Программа обеспечения надежности на стадии производства

В Arch Linux и производных по умолчанию основной версией является третья, поэтому в репозиториях присутствует пакет python-pip (третья версия) и python2-pip (вторая).

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

python не запускается или pip не является внутренней или внешней командой

Установлена новая версия модуля, но программа видит старую версию

Я несколько раз сталкивался с подобными необъяснимыми ошибками.

Иногда помогает удаление модуля командой вида:

sudo pip2 uninstall модуль

Также попробуйте удалить его используя системный менеджер пакетов.

Если модуль вам нужен, попробуйте вновь установить его и проверьте, решило ли это проблему.

Если проблема не решена, то удалите все файлы модуля, обычно они расположены в папках вида:

  • /usr/lib/python2.7/site-packages/модуль
  • /usr/lib/python3.7/site-packages/модуль

Ошибки с фразой «AttributeError: ‘NoneType’ object has no attribute»

Ошибки, в которых присутствует слово AttributeError, NoneType, object has no attribute обычно вызваны не отсутствием модуля, а тем, что модуль не получил ожидаемого аргумента, либо получил неправильное число аргументов. Было бы правильнее сказать, что ошибка вызвана недостаточной проверкой данных и отсутствием перехвата исключений (то есть программа плохо написана).

В этих случаях обычно ничего не требуется дополнительно устанавливать. В моей практике частыми случаями таких ошибок является обращение программы к определённому сайту, но сайт может быть недоступен, либо API ключ больше недействителен, либо программа не получила ожидаемые данные по другим причинам. Также программа может обращаться к другой программе, но из-за ошибки в ней получит не тот результат, который ожидала, и уже это вызывает приведённые выше ошибки, которые мы видим.

Опять же, хорошо написанная программа в этом случае должна вернуть что-то вроде «информация не загружена», «работа программы N завершилась ошибкой» и так далее. Как правило, нужно разбираться с причиной самой первой проблемы или обращаться к разработчику.

Модуль установлен, но при обновлении или обращении к нему появляется ошибки

Это самая экзотическая ошибка, которая вызвана, видимо, повреждением файлов пакета. К примеру, при попытке обновления я получал ошибку:

Requirement already satisfied: networkx in /usr/lib/python2.7/site-packages (2.1) Exception: Traceback (most recent call last): File «/usr/lib/python2.7/site-packages/pip/_internal/basecommand.py», line 141, in main status = self.run(options, args) File «/usr/lib/python2.7/site-packages/pip/_internal/commands/install.py», line 299, in run resolver.resolve(requirement_set) File «/usr/lib/python2.7/site-packages/pip/_internal/resolve.py», line 102, in resolve self._resolve_one(requirement_set, req) File «/usr/lib/python2.7/site-packages/pip/_internal/resolve.py», line 261, in _resolve_one check_dist_requires_python(dist) File «/usr/lib/python2.7/site-packages/pip/_internal/utils/packaging.py», line 46, in check_dist_requires_python feed_parser.feed(metadata) File «/usr/lib/python2.7/email/feedparser.py», line 177, in feed self._input.push(data) File «/usr/lib/python2.7/email/feedparser.py», line 99, in push parts = data.splitlines(True) AttributeError: ‘NoneType’ object has no attribute ‘splitlines’

При этом сам модуль установлен как следует из самой первой строки.

Читайте также:
Какой срок списания рбп программы 1с

Проблема может решиться удалением всех файлов пакета (с помощью rm) и затем повторной установки.

К примеру в рассматриваемом случае, удаление:

rm -rf /usr/lib/python2.7/site-packages/networkx-2.1-py2.7.egg-info/
pip2 install networkx Collecting networkx Downloading https://files.pythonhosted.org/packages/11/42/f951cc6838a4dff6ce57211c4d7f8444809ccbe2134179950301e5c4c83c/networkx-2.1.zip (1.6MB) 100% |████████████████████████████████| 1.6MB 2.9MB/s Requirement already satisfied: decorator>=4.1.0 in /usr/lib/python2.7/site-packages (from networkx) (4.3.0) Installing collected packages: networkx Running setup.py install for networkx . done Successfully installed networkx-2.1

После этого проблема с модулем исчезла.

Заключение

Пожалуй, это далеко не полный «справочник ошибок Python», но если вы можете сориентироваться, какого рода ошибка у вас возникла:

  • отсутствует модуль
  • модуль неправильной версии
  • модуль повреждён
  • внешняя причина — программа не получила ожидаемые данные

Так вот, если вы хотя бы примерно поняли главную причину, то вам будет проще понять, в каком направлении двигаться для её решения.

Источник: zalinux.ru

Почему питон не запускает программу

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

  1. Синтаксические ошибки — ошибки, обнаруживаемые Python в ходе трансляции исходного кода в байт-код. Такие ошибки вызваны тем, что что-то не так с синтаксисом программы. Пример: забыв поставить двоеточие в конце строки def , получим такое сообщение об ошибке: SyntaxError: invalid syntax .
  2. Ошибки времени выполнения — ошибки, возникающие при выполнении программы в случае, если происходит что-то неожиданное. Большинство ошибок времени выполнения включают информацию о том, где произошла ошибка и какие функции при этом выполнялись. Пример: бесконечная рекурсия в конце концов приводит к ошибке времени выполнения из-за превышения максимальной разрешенной глубины рекурсии.
  3. Семантические ошибки — логические ошибки в программе, которая компилируется и выполняется, но делает не то, что от нее ожидается. Пример: Выражение может быть вычислено не в том порядке, как ожидает программист, не позаботившийся о скобках.

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

Синтаксические ошибки¶

Синтаксическую ошибку легко исправить, как только вы поняли, в чем она состоит. К сожалению, сообщения об ошибках часто оказываются не очень полезны. Наиболее частые сообщения SyntaxError: invalid syntax и SyntaxError: invalid token не очень информативны.

С другой стороны, сообщение говорит вам о том, где именно в программе произошла ошибка. В действительности, в сообщении указано место, в котором Python обнаружил проблему, а это не обязательно то место, в котором содержится ошибка. Иногда ошибка расположена в коде программы раньше места, указанного в сообщении об ошибке, часто — в предыдущей строке.

Если вы создаете программу инкрементно, то должны хорошо представлять себе, где именно может находиться текущая ошибка. Она в одной из строк, которые вы только что добавили или изменили.

Читайте также:
Антивирус касперского тип программы

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

Вот несколько советов, как избежать самых распространенных синтаксических ошибок:

  1. Убедитесь, что вы не используете одно из ключевых слов Python как идентификатор (имя переменной или функции).
  2. Проверьте, что не забыли поставить двоеточие в конце заголовка каждого составного предложения, включая for , while , if и def .
  3. Проверьте, что отступы в вашей программе сделаны единообразно. Можете пользоваться пробелами или табуляцией, но лучше не смешивать одно с другим. Все строки каждого уровня вложенности кода должны иметь одинаковый отступ.
  4. Убедитесь, что все строковые литералы в коде имеют открывающие и закрывающие кавычки.
  5. Если в программе имеются строковые литералы в тройных кавычках, занимающие несколько строк в файле, убедитесь, что они корректно завершены. Незавершенная строка может привести к ошибке invalid token в конце вашей программы, или к тому, что последующая часть программы будет восприниматься как продолжение строки (пока не встретится другая строка). В последнем случае может даже не быть сообщения об ошибке!
  6. Незакрытая скобка – (,

Источник: amdy.su

Saved searches

Use saved searches to filter your results more quickly

Cancel Create saved search

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window.

Reload to refresh your session.

forked from DonJayamanne/pythonVSCode

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VS Code Python не видит Python Interpreter #9460

Machalkas opened this issue Jan 8, 2020 · 4 comments

VS Code Python не видит Python Interpreter #9460

Machalkas opened this issue Jan 8, 2020 · 4 comments

Machalkas commented Jan 8, 2020 •
edited by DonJayamanne

Issue Type: Bug

VS Code не видит установленный питон. При попытке запуска программы выдает сообщение, что Python не установлен. Пробовал переустановить Python, но это не дало результатов

Extension version: 2020.1.57204
VS Code version: Code 1.41.1 (26076a4de974ead31f97692a0d32f90d735645c0, 2019-12-18T14:58:56.166Z)
OS version: Windows_NT x64 10.0.18363

The text was updated successfully, but these errors were encountered:

Источник: github.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru