Jekyll, Pygments, and Python
Want to use Pygments with Jekyll, but can’t get passed the Failed to get header (MentosError)
exception?
You’ve read the documentation. You’ve run bundle install
, you’ve got Python installed, and you double-checked that all of your files are named appropriately. Everything was working until you added this to your _config.yml
:
highlighter: pygments
That’s when things blew up:
Configuration from /home/chris/website/_config.yml
Building site: /home/chris/website -> /home/chris/website/_site
...
/home/chris/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/pygments.rb-0.3.7/lib/pygments/popen.rb:357:in `rescue in get_header': Failed to get header. (MentosError)
from /home/chris/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/pygments.rb-0.3.7/lib/pygments/popen.rb:338:in `get_header'
from /home/chris/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/pygments.rb-0.3.7/lib/pygments/popen.rb:235:in `block in mentos'
Turns out, there’s one more step. Pygments requires Python 2.x and you’re probably using 3.x by default.
In may case, changing the system default wouldn’t work because I have dependencies on 3.x elsewhere in my system. The quick and dirty workaround is to set Python 2 as the default for your shell while you’re messing with Jekyll:
which python2
# => /usr/bin/python2
ln -s /usr/bin/python2 ~/bin/python
Or, in compact form (if you know there is a python2
binary in your $PATH
):
ln -s `which python2` ~/bin/python