Странное поведение при вызове Windows Python из WSL (Bash в Windows)

После установки WSL у меня есть две установки python на моем ПК: Windows и WSL. Разработчики заявляют здесь, что вы "можете вызывать двоичные файлы Windows прямо из Командная строка WSL, "однако, когда я пытаюсь вызвать файл python.exe, я получаю следующее странное поведение:

myprompt$ python.exe
1
2 
print("test")
print "test"
    File "<stdin>", line 4
        print "test"
                   ^
SyntaxError: Missing parentheses in call to 'print' 
myprompt$

А если бы интерактивный интерпретатор был запущен, я бы получил:

myprompt$ python.exe
>>>1
1
>>>2 
2
print("test")
test
print "test"
    File "<stdin>", line 1
        print "test"
                   ^
SyntaxError: Missing parentheses in call to 'print' 
myprompt$

Это похоже на то, что интерпретатор запущен, но он не дает мне подсказки и завершает работу при первой ошибке. Интересно, что если я перейду в тот же каталог и запустил python.exe из командной строки Windows, все будет работать нормально.

P.S .: Я нашел место установки Windows Python, выполнив команду sys.executable в Python.


person Evan Rosica    schedule 19.12.2017    source источник
comment
Пожалуйста, не публикуйте графику, если проблема не требует особого внимания, вместо этого скопируйте и вставьте текст. Сказав это, это выглядит довольно просто, вы пытаетесь запустить старый код Python 2 на Python 3.   -  person cdarke    schedule 19.12.2017
comment
Вопрос не в том, почему появляется ошибка, вопрос в том, куда делась подсказка ›››? Почему я не получил вывода из правильно отформатированной печати (теста) ?? Разве при вводе python.exe не следует запускать интерактивный интерпретатор?   -  person Evan Rosica    schedule 19.12.2017
comment
Похоже, ваш исполняемый файл получает параметр для запуска скрипта. И когда сценарий завершен, вы больше не получаете подсказку.   -  person creyD    schedule 19.12.2017
comment
@creyD - это именно то, чем кажется, но почему вызов python.exe из WSL и powershell должен приводить к другому поведению (и как это исправить)?   -  person Evan Rosica    schedule 19.12.2017
comment
Мне кажется, это ошибка или огромная неправильная конфигурация в подсистеме ... Я попробовал это на своем компьютере, и он работал, как должен ...   -  person creyD    schedule 19.12.2017
comment
странно ... Я попробовал переустановить всю подсистему и получил тот же результат. Интересно, что я попытался написать сценарий (myfile.py), который печатал одну строку текста и запускал его с помощью: python.exe myfile.py. Это сработало.   -  person Evan Rosica    schedule 19.12.2017
comment
Обновление: запуск python.exe -i запускает python в интерактивном режиме. Так что я знаю обходной путь. Мне все еще любопытно, почему это необходимо. Мне посчастливилось найти эту связанную проблему: stackoverflow.com/questions/32454589/.   -  person Evan Rosica    schedule 19.12.2017
comment
Попробуйте ввести python3 как есть. Возможно, это проблема с .exe, который на самом деле не совместим с Linux ...   -  person creyD    schedule 19.12.2017
comment
Позвольте нам продолжить это обсуждение в чате.   -  person Evan Rosica    schedule 19.12.2017


Ответы (1)


Используйте параметр -i, чтобы вызвать интерактивный интерпретатор. Так бежит

python.exe -i

запустит версию Python для Windows в интерактивном режиме из WSL.

person Evan Rosica    schedule 15.07.2018
comment
Таким образом, -i сделал его интерактивным по желанию, но я столкнулся с другими странными проблемами. Мне также нужно было включить -u (без буферизации), иначе он не будет печататься сразу и будет иметь другое странное поведение. Я также обнаружил, что не могу запускать файлы python с помощью Windows python, которые находились в файлах, которые были только частью wsl, а не в обычной файловой системе Windows. - person Robert Hickman; 13.09.2018