2013-02-09 1 views
-3

Je veux essayer Mako avec Django au lieu du langage par défaut de Django. Mais je vais avoir un problème lorsque je tente d'importer la classe de Mako Template comme écrit in the manual:Mako: impossible d'importer la classe Template. J'ai une erreur SyntaxError dans " mako template.py", ligne 622

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

Je le fais dans cmd Windows et reçois une telle erreur:

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 

Le code de cette partie :

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) 

Qu'est-ce que cela peut être? Je n'ai rien trouvé dans Google à propos de cette erreur. J'utilise Python 3.3. J'ai téléchargé Mako-0.7.3 comme fichier tar.gz et je l'ai juste décompressé dans C:\py\poject\vendor\template\Mako_73. Je n'ai pas ce répertoire dans le PYTHONPATH ou paths.pth. C:\py\poject est un répertoire où mon projet Django vit et en \vendor\template j'ai décidé de mettre Mako et de l'importer à partir de là.

UPD

J'ai trouvé la solution. J'ai installé le Framework Pyramid et j'ai pris le Mako à partir de là car le Mako est un système de template par défaut. Et la version de Pyramid fonctionne bien.

+1

Python 3 est relativement nouveau et, comme vous l'avez découvert, tous les paquets ne le supportent pas encore. Mais Mako 0.7.3 devrait fonctionner. Comment l'avez-vous installé? Le simple décompactage de l'archive ne suffit pas, vous devez utiliser python setup.py install (de préférence via un outil d'encapsulation tel que 'virtualenv' et' pip install'). –

Répondre

4

Votre problème de base est que vous utilisez Python 3, ce qui est relativement nouveau pour les grands projets comme Django.

Deuxièmement, vous devez savoir comment installer les paquets correctement. Je ne sais pas d'où vous vient Mako, mais vous ne trouverez nulle part qui dit "juste déballer le tarball" - peut-être que vous supposez que votre connaissance de PHP, mais ce n'est pas correct.

Sur le site de Mako, la méthode d'installation suggérée est pip.

Si vous optez pour le téléchargement manuellement, vous devez lire les instructions sur l'installation de paquets Python, par exemple ici: http://wiki.python.org/moin/CheeseShopTutorial

La raison Mako ne fonctionne pas pour vous est que la procédure d'installation (que vous avez pas run) convertit tout le code Python 2 fourni pour qu'il fonctionne sur Python 3. Ce n'est pas que quelqu'un n'a pas pris la peine de vérifier le code pour les erreurs de syntaxe de base!

Si vous essayez d'utiliser Django, bien que, Python 3 est certainement le mauvais choix - les instructions d'installation disent clairement que vous devez utiliser Python 2,5 à 2,7: https://docs.djangoproject.com/en/1.4/intro/install/

Puisque vous êtes nouveau à Python, vous devrait essayer de marcher avant de courir, et aller avec le chemin essayé et testé - qui est Python 2.7 pour Django. Ignorer les instructions et les exigences d'installation ne fera que vous ralentir et vous rendre la vie dure.