Выполнить буфер AquaMacs, который имеет "из __future__ import ..."

Запустив AquaEmacs, я хочу выполнить буфер (Cc Cc) в Python.

Буфер начинается с:

from __future__ import print_function

Выполнение в AquaEmacs начинается с:

import sys,imp
if'test_one_liners' in sys.modules:
   imp.reload(test_one_liners)
else:
   import test_one_liners

где test_one_liners.py - мой файл. Это дает эту ошибку:

 SyntaxError: from __future__ imports must occur at the beginning of the file

Кто-нибудь знает, где и как это исправить?

Позвольте мне добавить информацию еще раз, чтобы прояснить.

Создайте этот буфер:

 from __future__ import print_function

 print("Hello")

Используйте File/Change Buffer Mode/Python, чтобы сделать его Python, и Cc Cc, чтобы выполнить его; это не должно быть сохранено. Буфер записывается во временный файл и завершается с ошибкой SyntaxError: from __future__ imports must occur at the beginning of the file, Трассировка включает в себя сгенерированный файл, который содержит ссылку на временный файл. Что должно произойти вместо этого, печать Hello.

3 ответа

Решение

Это была ошибка в python-mode.el который исправлен в текущем выпуске. Похоже, Aquamacs в комплекте с более старой версиейpython-mode.el,

Отчет об ошибке здесь: ошибка #1063884 и исправление здесь.

Вам следует обновить пакет python-mode.el.

  1. Ты говоришь from __future__ import print_function, но сообщение об ошибке говорит о from __future__ imports --- Обратите внимание s в конце этого.

  2. Вы говорите, что " test_one_liners.py - это мой файл". И вы говорите, что from __future__ import print_function находится в начале "буфера". Но в сообщениях об ошибках говорится, что он не находит это заклинание в начале файла test_one_liners.py, Возможно, ваш текущий буфер, в котором есть это заклинание, не для этого файла?

Но если бы мне пришлось угадывать, я бы предположил, что проблема заключается в очевидной опечатке в № 1. ("Кажется очевидным", потому что вы, возможно, просто неправильно набрали сообщение, и в файле может быть указано правильное заклинание.)

Как было сказано, это исправлено в текущем транке.

https://launchpad.net/python-mode

При проверке вашего примера получите "ImportError: Нет модуля с именем test_one_liners", чего и следовало ожидать.

Второй пример печатает красиво "Привет".

Другие вопросы по тегам