执行带有 "from __future__ import ..." 的 AquaMacs 缓冲区。

5
运行 AquaEmacs,我想在Python中执行一个缓冲区(C-c C-c)。
该缓冲区以以下内容开头:
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")

使用文件/更改缓冲区模式/Python将其设置为Python,然后使用C-c C-c执行;不需要保存。该缓冲区被写入某个临时文件并出现SyntaxError: from __future__ imports must occur at the beginning of the file错误。回溯包括一个生成的文件,其中包含对临时文件的引用。相反,应该打印Hello。

3个回答

3
这是一个关于python-mode.el的错误,在当前版本中已经修复。看起来aquamacs捆绑了一个旧版本的python-mode.el
错误报告在这里:bug #1063884,修复方法在这里
您应该更新您的python-mode.el软件包。

1
正如所说,这个问题已经在当前的主干版本中得到了修复。

https://launchpad.net/python-mode

在检查您的示例时,会出现"ImportError: No module named test_one_liners",这是可以预料的。
第二个示例很好地打印出了"Hello"。

1
  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 中的明显拼写错误。(“明显”是因为您可能只是在帖子中打错了,而咒语在文件中可能是正确的。)


  1. 是的,错误信息是用英语写的,所以它说“imports must occur at the beginning of the file”;用单数形式会有语法错误。
  2. 是的,buffer 会被执行,使用 C-c C-c。文件名只是为了显示它处于 Python 模式。感谢您的猜测,但这可能与 exec 文件有关。我会添加更多信息。
- Charles Merriam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接