En ce qui concerne python2 (et python2 uniquement), certaines des réponses précédentes reposent sur l'utilisation du hack suivant :
import sys
reload(sys) # Reload is a hack
sys.setdefaultencoding('UTF8')
Il est déconseillé de l'utiliser (vérifier ce ou ce )
Dans mon cas, il y a un effet secondaire : j'utilise les carnets de notes d'Ipython, et une fois que j'exécute le code, la fonction "print" ne fonctionne plus. Je suppose qu'il y a une solution, mais je pense tout de même que l'utilisation du hack ne devrait pas être la bonne option.
Après avoir essayé de nombreuses options, celle qui a fonctionné pour moi est la suivante en utilisant le même code dans le sitecustomize.py
où ce bout de code est censé se trouver. . Après avoir évalué ce module, la fonction setdefaultencoding est supprimée de sys.
La solution est donc d'ajouter au fichier /usr/lib/python2.7/sitecustomize.py
le code :
import sys
sys.setdefaultencoding('UTF8')
Lorsque j'utilise virtualenvwrapper, le fichier que je modifie est le suivant ~/.virtualenvs/venv-name/lib/python2.7/sitecustomize.py
.
Et quand j'utilise les carnets de notes python et conda, c'est ~/anaconda2/lib/python2.7/sitecustomize.py
1 votes
Voir l'article de blog L'Illusoire setdefaultencoding .
3 votes
The best solution is to learn to use encode and decode correctly instead of using hacks.
Cela était certainement possible avec python2 au prix de ne jamais oublier de le faire / d'utiliser systématiquement votre propre interface. D'après mon expérience, cela devient très problématique lorsque vous écrivez du code que vous voulez faire fonctionner à la fois avec python2 et python3.