Jekyll on Windows: Pygments not working

13,264

Solution 1

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.

Solution 2

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

Solution 3

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

Solution 4

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 .

Solution 5

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.

Share:
13,264
Sebastian Sebald
Author by

Sebastian Sebald

Updated on June 04, 2022

Comments

  • Sebastian Sebald
    Sebastian Sebald about 2 years

    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 :(

  • Gui Ambros
    Gui Ambros almost 11 years
    Perfect, worked for me as well. Clearly some incompatibility with pygments.rb 0.5.1. Thanks @zzheng
  • Daniel
    Daniel almost 11 years
    Did not work for me. OS: Win8. Lates Ruby, DevKit, Jekyll etc. Guessing the error lies in trying to get a taste of the "happyland" on Windows.
  • Rudy Velthuis
    Rudy Velthuis almost 11 years
    I had similar problems, using Python 3.2. I uninstalled that, installed Python 2.7.5 instead and all worked well, even with pygments.rb version 0.5.2. I did have to set my codepage to 65001, using chcp 65001 before running Jekyll, because my sources are utf-8.
  • Brandon Anzaldi
    Brandon Anzaldi almost 11 years
    @JitendraVyas Always happy to help
  • Muhammad Resna Rizki Pratama
    Muhammad Resna Rizki Pratama almost 11 years
    thx. It helps me lot.. :) I must define Python's path and Python/Scripts dir path to windows Path variable too for making jekyll works. I'm using windows 8.
  • Mon Noval
    Mon Noval almost 11 years
    This fixes the issue on my windows. Plus by adding the path 'C:\Python27;' in C:\RailsInstaller\Ruby1.9.3\setup_environment.bat
  • konus
    konus over 10 years
    Indeed, as @RudyVelthuis says, You must use chcp 65001 before running jekyll...
  • huseyint
    huseyint over 10 years
    Worked thanks, I only need to uninstall 0.5.4 as it was the incompatible version installed on my machine.
  • robabby
    robabby over 10 years
    run gem uninstall pygments.rb without a version specified. If you happen to have multiple versions installed, like I did, it will let you select from the list to uninstall them. I had 0.4.2, 0.5.4, and 0.5.1 all installed, so I removed the two I didn't need, and it worked like a charm.
  • aurbano
    aurbano over 10 years
    Win7, solution for me was downgrading to Python 2.7
  • Rowan Miller
    Rowan Miller about 10 years
    Thanks - reverting to Python 2.7.* (from 3.4.1) solved the issue for me.
  • Colonel Panic
    Colonel Panic over 9 years
    Worked for me. Thanks
  • chris Ren
    chris Ren over 9 years
    In addition: enabling markdown:redcarpet will calling python to exec some script.When I disable redcarpet , I even didn't need installing python anymore to run jekyll. This is another reason when running jekyll on windows.Therefore,another solution is using kramdown which is set by jekyll 2.4 default.
  • Neo
    Neo about 9 years
    That worked for me. The if RUBY_PLATFORM =~ /(mswin|mingw|cygwin|bccwin)/ return 'python' end is the additional part here.