web-dev-qa-db-fra.com

Jekyll sous Windows: les pygments ne fonctionnent pas

J'ai mis à jour le dernier JekyllBuild (1.0.3) avant de toujours utiliser le RC. Après la mise à jour, l'analyse des codes (avec Pygments) ne fonctionne plus. J'obtiens toujours l'erreur suivante:

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

Quelqu'un a-t-il également rencontré ce problème?

Je n'ai aucune idée de Ruby, donc je ne peux pas le déboguer moi-même :(

40
Sebastian Sebald

J'ai eu le même problème. Semble qu'il y a n problème dans Pygments.rb 0.5.1. En revenant à Pygments 0.5.0, l'erreur a disparu.

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

J'espère que cela t'aides.

50
zzheng

En développant l'explication de zzheng, si vous rencontrez toujours des problèmes, essayez d'exécuter gem list. Assurez-vous ensuite que pygments.rb (0.5.2) n'est pas installé. Si c'est le cas, exécutez simplement cette commande.

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

Cela devrait régler votre problème et vous devriez pouvoir publier à nouveau avec Jekyll sur Windows.

EDIT: En outre, sur la base de ma propre expérience, cela peut provoquer une autre erreur. Liquid Error: Failed to get header. in 2013-07-20-post-name-here.md. La solution (non confirmée) consiste à installer Python 2.7. * Si vous ne l'avez pas déjà fait, bien que certaines personnes signalent que cela ne résout pas le problème.

Lectures complémentaires:

Numéro 1181 de Jekyll Github

Pygments.rb Github Issue # 45

Run jekyll --server Failed in Win7

17
Brandon Anzaldi

si vous ajoutez highlighter: false dans votre config.yml, vous pouvez éviter de charger du tout les Pygments

6
Alex Levine

Dernièrement, j'ai trouvé la meilleure façon de déployer jekyll ou tout autre environnement sur Windows en utilisant http://scoop.sh/ ou https://chocolatey.org/ =.


Cette erreur est principalement due au fait que Windows Shell ne peut pas trouver cette commande "qui" mais Cygwin et MinGW. Je pense que la meilleure solution est de modifier le popen.rb

à ceci ci-dessous:

# 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

Il y a aussi quelques détails selon Cette page .

2
chris Ren

En plus de ce qu'a dit @noobcode, vous pouvez continuer à utiliser pygments.rb si vous ajoutez le répertoire Python27 (où que vous l'ayez stocké) à votre chemin (comme un autre utilisateur l'a mentionné dans une réponse à un fil ci-dessus).

Ceux qui ne savent pas comment ajouter le répertoire à leur CHEMIN devraient visiter ce site .

1
dieschwarzekobra

Regardez https://github.com/juthilo/run-jekyll-on-windows/ . Il aide à résoudre les problèmes de Jekyll sur Windows, y compris Pygments (de https://github.com/juthilo/run-jekyll-on-windows/#install-python-environment et plus).

1
user1261322

Je sais que c'est répondu mais partage mon expérience. Il semble donc que le problème réside dans pygments.rb de Ruby installation. Après avoir installé jekyll et essayé de s'exécuter sur localhost, cela donnerait une erreur dans le fichier de publication par défaut. En supprimant le code de coloration syntaxique du fichier de démarque (voir ci-dessous) et en supprimant la référence des pygments du fichier _config.yml, j'ai pu l'exécuter sur l'hôte local.

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

Supprimer les lignes rayées

Les changements ont fonctionné cependant, je ne sais pas encore s'il existe un moyen possible d'utiliser pygments.rb pour la mise en évidence du code.

1
codingbbq

Pour moi, le correctif consistait à ajouter un lien symbolique vers python.exe appelé python2.exe

Faites cela, avec des privilèges élevés, dans le répertoire où python 2.x est installé:

mklink python2.exe python.exe
1
Thany

Allez dans le répertoire qui a python.exe et copiez et collez-le dans un nouveau fichier nommé python2.exe. Fixé!

0
Micah

Juste pour une référence à ceux qui rencontrent le même problème que moi. J'ai eu python 2.7.6 installé en premier, puis installé python 3.3.0. Donc réinstaller python 2.7.6 a résolu le problème pour moi. 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

0
flashlib