Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jekyll on Windows: Pygments not working

I updated to the latest JekyllBuild (1.0.3) before I always used the RC. After updating the parsing of codes (with Pygments) doesn't work anymore. I always get the following error:

C:/Ruby193/lib/ruby/gems/1.9.1/gems/posix-spawn-0.3.6/lib/posix/spawn.rb:162: warning: cannot close fd before spawn
←[31m  Liquid Exception: No such file or directory - /bin/sh in 2012-01-17-test-post.md←[0m

Did anyone also ran into this problem?

I have no clue about ruby, so I can not debug this myself :(

like image 716
Sebastian Sebald Avatar asked Jun 28 '13 11:06

Sebastian Sebald


5 Answers

I had the same issue. Seems there's a problem in Pygments.rb 0.5.1. By rolling back to Pygments 0.5.0 the error disappeared.

gem uninstall pygments.rb --version ">0.5.0"
gem install pygments.rb --version "=0.5.0"

Hope this helps.

like image 52
zzheng Avatar answered Oct 23 '22 08:10

zzheng


Expanding upon zzheng's explanation, if you're still having issues try running gem list. Then make sure pygments.rb (0.5.2) isn't installed. If it is, just run this command.

gem uninstall pygments.rb --version "=0.5.2"

That should take care of your problem, and you should be able to publish with Jekyll happily on Windows once again.

EDIT: Also, based upon my own experience, this may cause another error. Liquid Error: Failed to get header. in 2013-07-20-post-name-here.md. The (unconfirmed) solution is to install Python 2.7.* if you have not already done so, although some people report that this does not fix the problem.

Further Reading:

Jekyll Github Issue #1181

Pygments.rb Github Issue #45

Run jekyll --server Failed in Win7

like image 24
Brandon Anzaldi Avatar answered Oct 23 '22 08:10

Brandon Anzaldi


if you add highlighter: false to your config.yml, you can avoid loading Pygments at all

like image 6
Alex Levine Avatar answered Oct 23 '22 08:10

Alex Levine


Lately, I've found the best way to deploy jekyll or whatever else environment on windows is using http://scoop.sh/ or https://chocolatey.org/.


This error is mainly for the reason that Windows Shell can not find this command 'which' but Cygwin and MinGW. I think the best solution is modifying the popen.rb

to this below:

# Detect a suitable Python binary to use. We can't just use `python2`
# because apparently some old versions of Debian only have `python` or
# something like that.
def python_binary
    if RUBY_PLATFORM =~ /(mswin|mingw|cygwin|bccwin)/
        return 'python'
    end
    @python_binary ||= begin
        `which python2`
        $?.success? ? "python2" : "python"
    end
end

There are also some details according to This page .

like image 2
chris Ren Avatar answered Oct 23 '22 07:10

chris Ren


Adding to what @noobcode said, you can actually continue to use pygments.rb if you add the Python27 directory (wherever you stored it) to your path (as another user mentioned in a response to a thread above).

Those who don't have any idea how to add the directory to their PATH should visit this site.

like image 1
dieschwarzekobra Avatar answered Oct 23 '22 07:10

dieschwarzekobra