django

Error during template rendering

Picture 18

 

Error during template rendering

In template /home/username/env/lib/python2.7/site-packages/wagtail/wagtailadmin/templates/wagtailadmin/skeleton.html, error at line 20

‘module’ object has no attribute ‘compile’

 

This is what I’m stuck at now.

line 20 = {% compress css %}

in my admin skeleton.html

Which means the error links back to the Compressor.

Digging through the traceback logs reveal:

51. return compile(filename=self.filename)
File “/home/username/env/lib/python2.7/site-packages/django_libsass.py” in compile
41. return sass.compile(**kwargs)

Exception Type: AttributeError at /admin/login/
Exception Value: ‘module’ object has no attribute ‘compile’

Django_libsass is a django-compressor filter to compile SASS files using libsass, written by torchbox, the same guys who wrote Wagtail.

‘module’ object refers to sass in line 41.

either it does not recognize sass, or there is no compile class within sass for django_libsass to call and hence this error.

Possible Actions:

  1. Check dependencies and requirements are properly installed
  2. Check that django_libsass is on path and python path
  3. Find out where is sass.
  4. Do I have to pip install sass or is it within django_libsass?
  5. Find if compile is defined in sass, wherever that is
  6. See if I can run sass and compile in command line
  7. List django_libsass in settings.py as a ‘module’

SassCompile on command line

Following this StackOverflow reply,

/bin/sh: django_libsass.SassCompiler: command not found

Indicates that Django Compressor is trying to run django_libsass.SassCompiler as a shell command, and the script is failing to run. -Kevin Mooney

So digging through the traceback, I found a line that referenced compressor.

Further digging into compressor reveals this line in

/home/username/env/lib/python2.7/site-packages/compressor/filters/base.py

if "{outfile}" in self.command and not "outfile" in options:
ext = self.type and ".%s" % self.type or ""
self.outfile = NamedTemporaryFile(mode='r+', suffix=ext)
options["outfile"] = self.outfile.name
try:
command = fstr(self.command).format(**options)
proc = subprocess.Popen(command, shell=True, cwd=self.cwd,
stdout=self.stdout, stdin=self.stdin, stderr=self.stderr)
if self.infile is None:
filtered, err = proc.communicate(self.content.encode('utf8'))
else:
filtered, err = proc.communicate()
except (IOError, OSError), e:
raise FilterError('Unable to apply %s (%r): %s' %
(self.__class__.__name__, self.command, e))

So being the brutish non-coder that I am, I simply turned that ‘off’ to :

command = fstr(self.command).format(**options)
proc = subprocess.Popen(command, shell=False, cwd=self.cwd,
stdout=self.stdout, stdin=self.stdin, stderr=self.stderr)

It definitely helped to stop the

Error during template rendering

In template /home/username/env/lib/python2.7/site-packages/wagtail/wagtailadmin/templates/wagtailadmin/skeleton.html, error at line 20
/bin/sh: django_libsass.SassCompiler: command not found

Although now I get a :

'module' object has no attribute 'compile'

Hmm… let’s see where to go next?

Django: Unhandled Exception

Unhandled Exception

An unhandled exception was thrown by the application.

Possible causes:

  1. Uninstalled  module listed in settings.py INSTALLED_APPS

Possible action to take:

  1. Check apache error log
  2. Try running ./dispatch.fcgi in shell to see if it generates a traceback error or if it displays the correct html

note to self: wait at least 5min between changing the settings.py or dispatch.fcgi before allowing your domain to reflect any changes

ln -s your modules

Note to self: Remember to create symblinks of your modules in the site-packages folder of your virtualenv!

As I’m on a shared hosting, packages that need to be globally installed like south, six and Pillow, will not appear in ~/env/lib/python2.7/site-packages

neither will they appear when you attempt a pip list or pip freeze

and if you attempt to pip install them, you will encounter gcc permission error.

(env)username@username.co [~/env/lib/python2.7/site-packages]# ln -s /usr/lib/path/to/module

Check that your link is correct and it isn’t red text with a black background.

Will do a post on symlinks and their different colours and meanings.

If the links are not there or are wrong, you will most likely get an Unhandled Exception or maybe an Internal Server Error.