web-dev-qa-db-fra.com

Erreur d'importation de fond de carte dans PyCharm —— KeyError: 'PROJ_LIB'

J'ai essayé d'utiliser le paquet Basemap pour tracer une carte par PyCharm, mais j'ai eu un problème avec

from mpl_toolkits.basemap import Basemap`

Et le Traceback comme suit:

Traceback (most recent call last):
File "/Users/yupeipei/anaconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2963, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-4-0a24a3a77efd>", line 7, in <module>
    from mpl_toolkits.basemap import Basemap
  File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 20, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/Users/yupeipei/anaconda3/lib/python3.6/site-packages/mpl_toolkits/basemap/__init__.py", line 146, in <module>
    pyproj_datadir = os.environ['PROJ_LIB']
  File "/Users/yupeipei/anaconda3/lib/python3.6/os.py", line 669, in __ getitem__
    raise KeyError(key) from None
KeyError: 'PROJ_LIB'

Je suis confus avec cette erreur sur PyCharm, car le même script s'exécute correctement sur Jupyter ou Spyder! L’environnement dans PyCharm est ../anaconda3/lib/python3.6 où est identique à anaconda.

Quelqu'un at-il déjà rencontré cette erreur auparavant? Quelqu'un pourrait-il m'aider à résoudre cette erreur? 

10
Yupei

Après le commentaire de mewahl, j'ai ajouté à mon .bashrc (j'utilise bash):

exportez PROJ_LIB =/chemin/vers/votre/instalation/de/anaconda / share/proj/

et maintenant la carte de base (et les autres fonctionnent).

12
user1770719

Pour Windows 10 avec Anaconda + Python 3.71 (et, j'en suis sûr, d'autres versions de Python 3 et Windows 7/8), vous pouvez indiquer à Basemap où le fichier "epsg" de Proj4 doit réussir. Je n'ai pas d '"environnement" ou quoi que ce soit parce que c'est trop de travail à faire - donc je n'avais pas de zone anaconda\share\proj (pour autant que je puisse discerner pourquoi je ne l'avais pas).

Mais, ce que veut Basemap, c’est le fichier "epsg", recherchez-le dans le répertoire Anaconda à l’aide de l’explorateur Windows. S'il ne le trouve pas, installez Proj4 en ouvrant «l'invite Anaconda» et en tapant:

conda install -c conda-forge proj4

S'il le trouve, il devrait être dans quelque chose comme:

C:\Utilities\Python\Anaconda\Bibliothèque\Share (c'est où mien était, ainsi que\pkgs\endroits où je suppose qu'il met le paquet lui-même - et ceux-ci peuvent fonctionner aussi si besoin est, je les ai utilisés au début, mais la bibliothèque devrait mieux fonctionner avec les mises à jour (peut-être)).

Utilisez le code suivant avant d'importer Basemap et cela fonctionnera. Définit la variable d'environnement PROJ_LIB sur l'emplacement où epsg se trouve, puis Basemap peut être heureux.

import os
os.environ["PROJ_LIB"] = "C:\\Utilities\\Python\\Anaconda\\Library\\share"; #fixr
from mpl_toolkits.basemap import Basemap

En prime, pour obtenir des données haute résolution de Basemap, qu'Anaconda n'inclut pas dans l'installation de Basemap, entrez "Anaconda Prompt":

conda install -c conda-forge basemap-data-hires
6
user2403531

Cela semble être un problème commun. Il y a plusieurs rapports de bugs à ce sujet 

J'avais moi-même rencontré cette erreur, et la solution pour moi consistait à désinstaller Basemap 1.2, puis à installer Basemap 1.1 à partir d'un ancien fichier .Wav qui traînait toujours, puis à installer à nouveau Basemap 1.2. Honnêtement, je ne sais pas pourquoi cela a bien fonctionné.

De plus, parmi les problèmes évoqués ci-dessus, il y a toutes sortes d'autres solutions que les gens ont indiqué travailler pour eux. J'espère que l'un d'entre eux convient ici aussi.

Proj4 solution facile à résoudre sur pycharm est goto de réglage-> interprète de projet -> + -> écrire proj4 dans le champ de recherche et installer 

0

La réponse est de Github et cela a fonctionné pour moi . https://github.com/conda-forge/basemap-feedstock/issues/30

import os
import conda

conda_file_dir = conda.__file__
conda_dir = conda_file_dir.split('lib')[0]
proj_lib = os.path.join(os.path.join(conda_dir, 'share'), 'proj')
os.environ["PROJ_LIB"] = proj_lib

from mpl_toolkits.basemap import Basemap
0
Yusuf Baktir

J'ai rencontré le même problème. J'ai installé anaconda et installer conda install -c anaconda basemap.

J'ai utilisé Anaconda construit dans IDE nommé "Spyder" . Spyder est meilleur que pycharm. Le seul problème avec Spyder est le manque d'intellisense.

J'ai résolu le problème de Proj4 en définissant le chemin.

Autres problèmes lors du redémarrage du noyau lors du chargement d’un ensemble de données de fichier plus volumineux .json. 

J'utilise notepad ++ et l'éditeur 010 pour ré-enregistrer le fichier par petits morceaux et enfin, j'ai fusionné toutes les sorties. 

0