Salut,
Ça y est, je me décide à apprendre à utiliser les Static Site Generators, suite à quelques discussions avec @Moul sur l’usage déjà en cours de GitLab Pages, et parce qu’un peu de lecture m’a convaincu qu’apprendre à utiliser de tels trucs sera un bon investissement de mon temps.
Mon intention est de traduire mes scripts PHP dans un SSG, de sorte de pouvoir profiter des avantages du full statique, mais quel SSG choisir ?
Moul m’a indiqué que le site de Duniter utilisait Pelican et, même si je ne suis pas hyper hyper familier de Python, je me dis que c’est pas con d’apprendre celui-là, vu que ça peut me permettre de contribuer au site duniter.org à l’occaz.
Seulement voilà, je ne passe pas l’étape d’installation
J’ai d’abord une première erreur lorsque je lance $ ./develop_server.sh start 8556
WARNING: JINJA_EXTENSIONS setting has been deprecated, moving it to JINJA_ENVIRONMENT setting.
CRITICAL: KeyError: u'JINJA_ENVIRONMENT'
Traceback (most recent call last):
File "/home/boris/www/duniter_website_fr/bin/pelican", line 8, in <module>
sys.exit(main())
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/__init__.py", line 512, in main
pelican, settings = get_instance(args)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/__init__.py", line 397, in get_instance
settings = read_settings(config_file, override=get_config(args))
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/settings.py", line 186, in read_settings
settings = handle_deprecated_settings(settings)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/settings.py", line 291, in handle_deprecated_settings
settings['JINJA_EXTENSIONS']
KeyError: u'JINJA_ENVIRONMENT'
Ce problème est dû à la MàJ de Pelican vers la v3.7 apparemment d’après ce qu’ils disent dans leur journal de bord.
Bon, du coup j’ai bidouillé le fichier local/pelicanconf.py
de la façon suivante :
JINJA_EXTENSIONS = ['jinja2.ext.i18n']
remplacé par :
JINJA_ENVIRONMENT = {
'extensions': ['jinja2.ext.i18n']
}
et ça semble fonctionner.
Ensuite j’ai une autre erreur :
CRITICAL: TypeError: not all arguments converted during string formatting
Traceback (most recent call last):
File "/home/boris/www/duniter_website_fr/bin/pelican", line 8, in <module>
sys.exit(main())
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/__init__.py", line 556, in main
autoreload(watchers, args, old_static, reader_descs)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/__init__.py", line 460, in autoreload
pelican.run()
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/__init__.py", line 137, in run
p.generate_output(writer)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/generators.py", line 688, in generate_output
self.generate_pages(writer)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/generators.py", line 597, in generate_pages
self.generate_articles(write)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/generators.py", line 469, in generate_articles
url=article.url, blog=True)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/writers.py", line 278, in write_file
override_output)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/writers.py", line 210, in _write_file
output = template.render(localcontext)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/jinja2/environment.py", line 1008, in render
return self.environment.handle_exception(exc_info, True)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/jinja2/environment.py", line 780, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/boris/www/duniter_website_fr/pelican-themes/pelican-bootstrap3/templates/article.html", line 1, in top-level template code
{% extends "base.html" %}
File "/home/boris/www/duniter_website_fr/pelican-themes/pelican-bootstrap3/templates/base.html", line 95, in top-level template code
<link href="{{ SITEURL }}/{{ CATEGORY_FEED_ATOM|format(category.slug) }}" type="application/atom+xml" rel="alternate"
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/jinja2/filters.py", line 685, in do_format
return soft_unicode(value) % (kwargs or args)
TypeError: not all arguments converted during string formatting
127.0.0.1 - - [10/Nov/2019 12:01:09] "GET / HTTP/1.1" 200 -
Là, et j’aurais pas dû, je suis les conseils de @vit et je supprime python-2.7 (attention : il ne faut jamais désinstaller Python sous Linux. L’erreur semble disparaître.
[EDIT]Quoique… en fait je l’ai eu de nouveau.
Un utilisateur de Pelican explique qu’il faudrait éditer le fichier base.html
du template (donc pelican-themes/pelican-bootstrap3/templates/base.html
dans notre cas) de la façon suivante :
Remplacer
CATEGORY_FEED_ATOM|format(category.slug)
par
CATEGORY_FEED_ATOM|format(slug=category.slug)
et
TAG_FEED_ATOM|format(tag.slug)
par
TAG_FEED_ATOM|format(slug=tag.slug)
Ok, je fais ça.
Mais il explique aussi qu’il faut modifier le fichier pelicanconf.py
pour remplacer %s.atom.xml
par {slug}.atom.xml
, et là je ne vois pas où c’est.
[/EDIT]
Mais ensuite lorsque je relance $ ./develop_server.sh start 8556
c’est bizarre parce que quand je me rends sur http://localhost:8556/ j’ai ça :
tandis que dans certains répertoire, comme content/
par exemple j’ai une erreur :
Et dans le terminal j’ai l’erreur suivante :
ERROR: Cannot load plugin `i18n_subsites`
| ImportError: cannot import name Draft
et aussi :
CRITICAL: UndefinedError: 'gettext' is undefined
Traceback (most recent call last):
File "/home/boris/www/duniter_website_fr/bin/pelican", line 8, in <module>
sys.exit(main())
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/__init__.py", line 556, in main
autoreload(watchers, args, old_static, reader_descs)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/__init__.py", line 460, in autoreload
pelican.run()
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/__init__.py", line 137, in run
p.generate_output(writer)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/generators.py", line 688, in generate_output
self.generate_pages(writer)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/generators.py", line 597, in generate_pages
self.generate_articles(write)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/generators.py", line 469, in generate_articles
url=article.url, blog=True)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/writers.py", line 278, in write_file
override_output)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/pelican/writers.py", line 210, in _write_file
output = template.render(localcontext)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/jinja2/environment.py", line 1008, in render
return self.environment.handle_exception(exc_info, True)
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/jinja2/environment.py", line 780, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/boris/www/duniter_website_fr/pelican-themes/pelican-bootstrap3/templates/article.html", line 1, in top-level template code
{% extends "base.html" %}
File "/home/boris/www/duniter_website_fr/pelican-themes/pelican-bootstrap3/templates/base.html", line 169, in top-level template code
{% block content %}
File "/home/boris/www/duniter_website_fr/pelican-themes/pelican-bootstrap3/templates/article.html", line 82, in block "content"
title="{{ _('Permalink to') }} {{ article.title|striptags }}">
File "/home/boris/www/duniter_website_fr/local/lib/python2.7/site-packages/jinja2/ext.py", line 134, in _gettext_alias
return __context.call(__context.resolve('gettext'), *args, **kwargs)
jinja2.exceptions.UndefinedError: 'gettext' is undefined
Et là du coup j’ai l’impression que ça vient du fait que j’ai désinstallé python2.7
[EDIT]
Bon, pour ça, apparemment un coup de
pip install python-gettext
fait le taf.
RE-EDIT: ah non
[/EDIT]
Et d’ailleurs maintenant quand j’accède à localhost:8556 j’ai plus que ça :
Quelqu’un saurait-il résoudre ?
Merci