Skip to content

FileSystemLoader: {% import foo/test %} fails if there are templates 'foo' and 'foo/test' #821

@praiskup

Description

@praiskup

Consider the FileSystemLoader([dir1, dir2]), where dir1 containers foo template, while dir2 contains directory foo with file test.

Expected Behavior

The env.get_template('foo/test') should return proper template.

Actual Behavior

The env.get_template('foo/test') raises
-> IOError: [Errno 20] Not a directory: 'dir1/foo/test'

Full Traceback

IOError: [Errno 20] Not a directory: 'dir1/foo/test'
>>> from jinja2 import FileSystemLoader, Environment
>>> loader = FileSystemLoader(['dir1', 'dir2'])
>>> env = Environment(loader=loader)
>>> env.get_template('foo/test')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/jinja2/environment.py", line 830, in get_template
    return self._load_template(name, self.make_globals(globals))
  File "/usr/lib/python2.7/site-packages/jinja2/environment.py", line 804, in _load_template
    template = self.loader.load(self, name, globals)
  File "/usr/lib/python2.7/site-packages/jinja2/loaders.py", line 113, in load
    source, filename, uptodate = self.get_source(environment, name)
  File "/usr/lib/python2.7/site-packages/jinja2/loaders.py", line 171, in get_source
    f = open_if_exists(filename)
  File "/usr/lib/python2.7/site-packages/jinja2/utils.py", line 154, in open_if_exists
    return open(filename, mode)
IOError: [Errno 20] Not a directory: 'dir1/foo/test'

Your Environment

  • Python version: any
  • Jinja version: any

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions