40

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

4

10 回答 10

50

我遇到过同样的问题。Pygments.rb 0.5.1似乎有问题。通过回滚到 Pygments 0.5.0,错误消失了。

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

希望这可以帮助。

于 2013-07-01T12:13:46.990 回答
17

扩展 zzheng 的解释,如果您仍然遇到问题,请尝试运行gem list。然后确保pygments.rb (0.5.2)没有安装。如果是,只需运行此命令。

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

这应该可以解决您的问题,并且您应该能够再次在 Windows 上愉快地使用 Jekyll 进行发布。

编辑:另外,根据我自己的经验,这可能会导致另一个错误。Liquid Error: Failed to get header. in 2013-07-20-post-name-here.md. (未经证实的)解决方案是安装 Python 2.7.*(如果您尚未安装),尽管有些人报告说这并不能解决问题。

延伸阅读:

Jekyll Github 问题 #1181

Pygments.rb Github 问题 #45

Win7 运行 jekyll --server 失败

于 2013-07-20T08:54:23.817 回答
6

如果你添加highlighter: false到你的 config.yml,你可以完全避免加载 Pygments

于 2014-07-17T02:04:43.590 回答
2

最近,我发现在 Windows 上部署 jekyll 或其他任何环境的最佳方法是使用http://scoop.sh/https://chocolatey.org/


这个错误主要是因为 Windows Shell 找不到这个命令 'which' 但 Cygwin 和 MinGW。我认为最好的解决方案是修改popen.rb

到下面这个:

# 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

根据此页面也有一些详细信息 。

于 2015-02-07T07:08:45.453 回答
1

I know this is answered but sharing my experience. So it appears that the issue lies with pygments.rb of ruby installation. After installing jekyll and trying to run at localhost it would give an error at the default post file. By deleting the syntax highlighting code from the markdown file (see below) and removing the reference of pygments from _config.yml file, I was able to run it on the localhost.

{% highlight ruby %}
def print_hi(name) puts "Hi, #{name}" end print_hi('Tom') prints 'Hi, Tom' to STDOUT. {% endhighlight %}

Remove the striked-out lines

The changes worked however am yet to figure out if there is a possible way to use the pygments.rb for code highlighting.

于 2013-08-18T16:14:33.563 回答
1

对我来说,解决方法是向 python.exe 添加一个名为 python2.exe 的符号链接

在安装 python 2.x 的目录中使用提升的权限执行此操作:

mklink python2.exe python.exe
于 2014-08-28T12:36:39.337 回答
1

pygments.rb添加到@noobcode 所说的内容,如果您将 Python27 目录(无论您存储它的位置)添加到您的路径中(正如另一个用户在对上述线程的响应中提到的那样),您实际上可以继续使用。

那些不知道如何将目录添加到他们的 PATH 的人应该访问这个站点

于 2013-10-23T21:38:27.110 回答
1

查看https://github.com/juthilo/run-jekyll-on-windows/。它有助于解决 Windows 上的 Jekyll 问题,包括 Pygments(来自https://github.com/juthilo/run-jekyll-on-windows/#install-python-environment及更高版本)。

于 2014-01-13T12:48:55.763 回答
0

仅供像我一样遇到同样问题的人参考。我先安装了 python 2.7.6,然后安装了 python 3.3.0。所以重新安装 python 2.7.6为我解决了这个问题。 pygments.rb (0.5.4) Python 2.7.6 ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0] jekyll 1.4.3 OSX 10.8.5

于 2014-02-25T01:14:09.567 回答
0

进入具有的目录python.exe并将其复制并粘贴到一个名为python2.exe. 固定的!

于 2014-09-03T20:09:35.647 回答