IDLE импортирует подпроцесс SyntaxError, но не в Python3 в терминале с Mac OSX - PullRequest
0 голосов
/ 16 ноября 2018

Следующий фрагмент кода из окна оболочки IDLE Python 3.7.1 в MacOS 10.11.6 вызывает синтаксическую ошибку.
Какое решение?
Тот же код выполняется в Terminal Python 2.7.10 или Python3.не вызывает ошибку.

Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 03:13:28) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license()" for more information.
>>> import subprocess
from time import strftime
import time
SyntaxError: multiple statements found while compiling a single statement
>>>

1 Ответ

0 голосов
/ 16 ноября 2018

Ответ, как это часто бывает, содержится в сообщении об исключении.Вы должны ввести один и только один оператор в ответ на запрос оператора IDLE.Пару недель назад я отредактировал документ IDLE , чтобы сделать это более понятным.

С помощью оболочки IDLE можно вводить, редактировать и вызывать полные операторы.Большинство консолей и терминалов работают одновременно только с одной физической строкой.

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

Если в ответ на приглашение >>> введите import subprocess и нажмите return, IDLE отправляет инструкцию Python в пользовательский процесс для выполнения импорта.Затем IDLE представляет новое приглашение >>>.Вы ввели три оператора без запуска выполнения.Единственный способ, которым я знаю, - это вставить все три сразу.(Если вы нашли другой способ, я хотел бы знать; -).

Чтобы запустить несколько операторов одновременно, отредактируйте или вставьте файл и запустите его.Я храню файл tem.py, который я использую для этого.Я обычно открываю его с помощью Files => Recent files.

...