I'm going through the tutorial for the Pyramid framework and I'm currently stuck at the one that teaches the use of Jinja2 as the templating engine.. It seems that when I run the test using nosetests
, I get this odd ImportError stating that the name Environment couldn't be imported from the Jinja2 module. Funny thing is, when I pserve
the site, it works just fine. It seems like this error will only occur during the test...I am currently working off a virtualenv using Ubuntu 14.04.
Any suggestions?
Here's the stack trace...
======================================================================
ERROR: test_home (jinja2.tutorial.tests.TutorialFunctionalTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/bk/pg/pyramid/quick_tutorial/jinja2/tutorial/tests.py", line 30, in setUp
app = main({})
File "/home/bk/pg/pyramid/quick_tutorial/jinja2/tutorial/__init__.py", line 5, in main
config.include('pyramid_jinja2')
File "/home/bk/pg/pyramid/venv/local/lib/python2.7/site-packages/pyramid/config/__init__.py", line 727, in include
c = self.maybe_dotted(callable)
File "/home/bk/pg/pyramid/venv/local/lib/python2.7/site-packages/pyramid/config/__init__.py", line 825, in maybe_dotted
return self.name_resolver.maybe_resolve(dotted)
File "/home/bk/pg/pyramid/venv/local/lib/python2.7/site-packages/pyramid/path.py", line 320, in maybe_resolve
return self._resolve(dotted, package)
File "/home/bk/pg/pyramid/venv/local/lib/python2.7/site-packages/pyramid/path.py", line 327, in _resolve
return self._zope_dottedname_style(dotted, package)
File "/home/bk/pg/pyramid/venv/local/lib/python2.7/site-packages/pyramid/path.py", line 376, in _zope_dottedname_style
found = __import__(used)
File "/home/bk/pg/pyramid/venv/local/lib/python2.7/site-packages/pyramid_jinja2-2.5-py2.7.egg/pyramid_jinja2/__init__.py", line 6, in <module>
from jinja2 import Environment as _Jinja2Environment
ImportError: cannot import name Environment
----------------------------------------------------------------------
@Michael Merickel is right. You have a conflict between your jinja2
module and real one. This mistake grows from python2 import politics. But you can add to first line of your script magic sentence from __future__ import absolute_import
. It changes relative import to absolute.
More information: PEP 0328 -- Imports: Multi-Line and Absolute/Relative
But my solution doesn't help you if you want to execute your script from /home/bk/pg/pyramid/quick_tutorial/
. Because in this situation where will be two possible way to resolve import jinja2
.