【问题标题】:Mako: cannot import the Template class. Have a SyntaxError error in "\mako\template.py", line 622Mako:无法导入模板类。在“\mako\template.py”中出现 SyntaxError 错误,第 622 行
【发布时间】:2013-01-24 21:40:09
【问题描述】:

我想用 Django 代替 Django 的默认模板语言来尝试 Mako。但是当我尝试导入 Mako 的 Template 类时,我遇到了问题,如 in the manual 所写:

from mako.template import Template 
mytemplate = Template("hello world!") 
print mytemplate.render()

我在 Windows cmd 中执行此操作并收到这样的错误:

C:\Documents and Settings\User>cd C:\py\project\vendor\template\Mako_73  // cd to where I unpacked Mako
C:\py\project\vendor\template\Mako_73>python   // run Python interpreter

>>> from mako.template import Template  // trying to import and getting an error
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File ".\mako\template.py", line 622
    exec code in module.__dict__, module.__dict__
            ^
SyntaxError: invalid syntax

那部分的代码:

def _compile_text(template, text, filename):
    identifier = template.module_id
    source, lexer = _compile(template, text, filename,
                        generate_magic_comment=template.disable_unicode)

    cid = identifier
    if not util.py3k and isinstance(cid, unicode):
        cid = cid.encode()
    module = types.ModuleType(cid)
    code = compile(source, cid, 'exec')    
    exec code in module.__dict__, module.__dict__
    return (source, module)

可能是什么?我在 Google 中找不到有关此错误的任何信息。

我正在使用 Python 3.3。

我已将 Mako-0.7.3 下载为 tar.gz 文件,然后将其解压缩到 C:\py\poject\vendor\template\Mako_73。我在 PYTHONPATH 或 paths.pth 中没有这个目录。 C:\py\poject 是我的 Django 项目所在的目录,在 \vendor\template 中,我决定放置 Mako 并从那里导入。

UPD

我找到了解决方案。我已经安装了 Pyramid Framework 并从那里获取了 Mako,因为 Mako 是其中的默认模板系统。 Pyramid 的版本运行良好。

【问题讨论】:

  • Python 3 相对较新,而且,正如您所发现的,并非所有软件包都支持它。不过,Mako 0.7.3 应该可以工作。你是怎么安装的?仅仅解压存档是不够的,你需要使用 python setup.py install (最好通过包装工具,如virtualenvpip install)。

标签: python-3.x mako


【解决方案1】:

您的基本问题是您使用的是 Python 3,这对于像 Django 这样的大型项目来说相对较新。

其次,您需要了解如何正确安装软件包。我不知道你从哪里得到 Mako,但你不会找到任何地方说“只需解压缩 tarball” - 也许你是根据你的 PHP 知识假设的,但这是不正确的。

在 Mako 网站上,建议的安装方法是 pip。

如果您要手动下载,则需要阅读有关安装 Python 包的说明,例如:http://wiki.python.org/moin/CheeseShopTutorial

Mako 不适合你的原因是安装过程(你还没有运行)转换了所有提供的 Python 2 代码,以便它在 Python 3 上工作。并不是有人不费心去检查代码是否有基本语法错误!

如果您尝试使用 Django,那么 Python 3 绝对是错误的选择 - 安装说明清楚地表明您需要使用 Python 2.5 到 2.7:https://docs.djangoproject.com/en/1.4/intro/install/

由于您是 Python 新手,因此您应该在跑步之前尝试步行,并遵循久经考验的路径——即 Python 2.7 for Django。忽略安装说明和要求只会减慢您的速度并让生活变得艰难。

【讨论】:

    猜你喜欢
    • 2014-01-14
    • 2016-10-07
    • 2016-08-02
    • 2012-09-14
    • 1970-01-01
    • 2012-04-21
    • 2021-04-19
    • 1970-01-01
    • 2011-11-29
    相关资源
    最近更新 更多