J'ai téléchargé Quokka Python/Flask CMS sur un serveur CentOS7. Tout fonctionne bien avec la commande
Sudo python3 manage.py runserver --Host 0.0.0.0 --port 80
Ensuite, je crée un fichier /etc/init.d/quokkacms. Le fichier contient le code suivant
start() {
echo -n "Starting quokkacms: "
python3 /var/www/quokka/manage.py runserver --Host 0.0.0.0 --port 80
touch /var/lock/subsys/quokkacms
return 0
}
stop() {
echo -n "Shutting down quokkacms: "
rm -f /var/lock/subsys/quokkacms
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
;;
restart)
stop
start
;;
*)
echo "Usage: quokkacms {start|stop|status|restart}"
exit 1
;;
esac
exit $?
Mais je reçois une erreur lors de l'exécution de Sudo service quokkacms start
RuntimeError: le clic interrompra l'exécution ultérieure car Python 3 a été configuré pour utiliser ASCII comme encodage pour l'environnement. Passez à Python 2 ou consultez http://click.pocoo.org/python3/ pour
étapes d'atténuation.
Il me semble que c'est le script bash. Comment se fait-il que j'obtienne des résultats différents? J'ai également suivi les instructions du lien dans le message d'erreur, mais je n'ai toujours pas eu de chance.
[mise à jour] J'avais déjà essayé la solution fournie par Click avant de poser cette question. Vérifiez les résultats ci-dessous (je lance en root):
[root@webserver quokka]# python3
Python 3.4.3 (default, Jan 26 2016, 02:25:35)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale
>>> import codecs
>>> print(locale.getpreferredencoding())
UTF-8
>>> print(codecs.lookup(locale.getpreferredencoding()).name)
utf-8
>>> locale.getdefaultlocale()
('en_US', 'UTF-8')
>>> locale.CODESET
14
>>>
Si vous essayez d'exécuter des tests, vous devez définir à chaque fois les variables d'environnement suivantes:
export LC_ALL=en_US.utf-8
export LANG=en_US.utf-8
Faire cela à chaque fois résoudra l'erreur.
Il peut également être possible de définir cela dans votre configuration IDE run comme
LC_ALL=en_US.UTF-8;LANG=en_US.UTF-8
Par exemple, consultez le paramètre suivant dans PyCharm 2016:
Ajout de plus aux solutions existantes:
Si vous voyez quelque chose comme cette erreur dans Python 3:
Traceback (most recent call last):
...
RuntimeError: Click will abort further execution because Python 3 was
configured to use ASCII as encoding for the environment. Either switch
to Python 2 or consult http://click.pocoo.org/python3/ for
mitigation steps.
Vous avez affaire à un environnement où Python 3 pense que vous êtes limité aux données ASCII. La solution à ces problèmes est différente selon les paramètres régionaux exécutés par votre ordinateur) dans.
Par exemple, si vous avez une machine Linux allemande, vous pouvez résoudre le problème en exportant les paramètres régionaux vers de_DE.utf-8:
export LC_ALL=de_DE.utf-8
export LANG=de_DE.utf-8
Si vous êtes sur une machine américaine, en_US.utf-8 est l'encodage de choix. Sur certains systèmes Linux plus récents, vous pouvez également essayer C.UTF-8 comme paramètre régional:
export LC_ALL=C.UTF-8
export LANG=C.UTF-8
Extrait de Python 3 Surrogate Handling