Bonjour,
je suis étudiant en géographie et je m'intéresse à la programmation en python, je reste toutefois un grand débutant.
Mon professeur me demande de faire un html servant de carte interactive, en utilisant le module "folium" (un module adapté de leaflet permettant d'afficher des résultats de cartographie en utilisant le langage python). Toutefois, dès que j'essaye d'utiliser ce module, python lève une erreur d'Unicode.
Je suis sur windows 10, j’utilise python 2.7 avec lequel folium est censé fonctionner.
J’ai installé jinja2, branca, numpy, pandas, vincent, mock, flake8, pytest, sphinx et finalement folium. J’ai utilisé pip install pour certains et easy_install pour d’autres.
A chaque fois que j’essaye de lancer un code avec folium, je reçois toujours la même erreur « UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 19: ordinal not in range(128) ».
Par exemple, lorsque je test le code base_map donné en exemple dans le dossier de folium, tout se passe bien, le html fonctionne parfaitement, toutefois, lorsque je copie/colle ce même code sur un autre fichier python, il lève cette exception.
Ci après le code de base_map :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 # -*- coding: utf-8 -*- '''Test of Folium basic map''' import folium # Standard OSM. map_osm = folium.Map(location=[45.5236, -122.6750]) map_osm.save(outfile='osm.html') # Stamen Toner. stamen = folium.Map(location=[45.5236, -122.6750], tiles='Stamen Toner', zoom_start=13) stamen.save(outfile='stamen_toner.html')
Et l’exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 Traceback (most recent call last): File "C:\Users\Maxime Rouchès\Desktop\python\carte2.py", line 7, in <module> map_osm = folium.Map(location=[45.5236, -122.6750]) File "C:\Users\Maxime Rouchès\Desktop\python\folium\map.py", line 173, in __init__ detect_retina=detect_retina) File "C:\Users\Maxime Rouchès\Desktop\python\folium\map.py", line 235, in add_tile_layer detect_retina=detect_retina) File "C:\Users\Maxime Rouchès\Desktop\python\folium\map.py", line 354, in __init__ filter_func=lambda x: x.startswith('tiles/'))) File "C:\Python27\lib\site-packages\jinja2\environment.py", line 723, in list_templates x = self.loader.list_templates() File "C:\Python27\lib\site-packages\jinja2\loaders.py", line 265, in list_templates _walk(path) File "C:\Python27\lib\site-packages\jinja2\loaders.py", line 259, in _walk for filename in self.provider.resource_listdir(path): File "build\bdist.win-amd64\egg\pkg_resources\__init__.py", line 1486, in resource_listdir return self._listdir(self._fn(self.module_path, resource_name)) File "build\bdist.win-amd64\egg\pkg_resources\__init__.py", line 1530, in _fn return os.path.join(base, *resource_name.split('/')) File "C:\Python27\lib\ntpath.py", line 85, in join result_path = result_path + p_path UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 19: ordinal not in range(128)
Je n’ai peut être pas bien finalisé l’installation de folium, en effet sur les docs de folium il est demandé sur la fin de l’installation de run les tests : http://folium.readthedocs.io/en/late...l#requirements
Toutefois, alors que j’ai installé pytest, le CMD me dit toujours que « 'py.test' n’est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes. »
De même, les docs demandent de lorsque je veux construire les docs, alors que j’ai installé sphynx, on me dit que « 'rm' n’est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes. »
J'ai l'impression qu'il y a un problème avec l'encodage, toutefois tout le monde utilise utf-8 avec folium, ensuite je suis vraiment un grand débutant, donc je ne comprends pas bien les problèmes liés à l'Unicode.
Si vous avez des pistes à m'avancer, je vous en remercie énormément.
Cordialement
Maxime Rouchès
Partager