4
votes

Comment éviter l'erreur PROJ_LIB lors de l'importation du fond de carte?

J'ai essayé d'importer le fond de carte comme suit en Python:

Traceback (most recent call last):

  File "<ipython-input-16-880204a64918>", line 2, in <module>
    from mpl_toolkits.basemap import Basemap

  File "C:\Users\bakhadher\AppData\Local\Continuum\anaconda3\lib\site-packages\mpl_toolkits\basemap\__init__.py", line 155, in <module>
    pyproj_datadir = os.environ['PROJ_LIB']

  File "C:\Users\bakhadher\AppData\Local\Continuum\anaconda3\lib\os.py", line 678, in __getitem__
    raise KeyError(key) from None

KeyError: 'PROJ_LIB'

et j'obtiens l'erreur suivante:

from mpl_toolkits.basemap import Basemap


2 commentaires

Lien utile ici: github.com/matplotlib/basemap/issues/419


Cela est dû à l'installation de conda dans l'environnement de base. Vous avez donc soit a) définissez PROJ_LIB dans votre environnement (~ / .bashrc), soit b) kludge PROJ_LIB dans votre code Python, avant d'importer depuis le fond de carte ou c) réinstallez le fond de carte sous un environnement conda activé


3 Réponses :


4
votes

De là: https://github.com/ conda-forge / basemap-feedstock / issues / 30 # issuecomment-423512069

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```


2 commentaires

J'ai essayé l'approche et cela donne l'erreur "FileNotFoundError: [Errno 2] Aucun fichier ou répertoire de ce type: 'D: \\ Anaconda_Python \\ share \\ proj \\ epsg'" Et en fait, je n'ai pas de dossier 'proj' dans cette localisation, même si j'ai installé le package proj


Cela a fonctionné pour moi avec anaconda3 sur Linux et OSX. Je ne sais pas pourquoi, mais sous OSX, le problème ne se produisait que lorsque le script bash qui invoquait le programme python était appelé par cron; l'appel du script bash à partir de la ligne de commande a fonctionné sans le même problème.



1
votes
  1. Reintall package (un problème de version pourrait en être la cause)
  2. import os
    os.environ['PROJ_LIB'] = '/glade/u/home/lixujin/work/anaconda3/envs/AC_tools/share/proj'
    
    1. Définir l'environnement: setenv PROJ_LIB "$CONDA_PREFIX/share/proj"
    2. dans un script python (doit être personnalisé dans un environnement différent)
    conda install -c conda-forge proj4
    conda install basemap
    

1 commentaires

Où dois-je écrire "$ CONDA_PREFIX / share / proj" dans l'invite Anaconda ou dans Spyder? Les deux donnent des erreurs. Si je co à "D: \ Anaconda_Python \ share", il n'y a pas de dossier "proj"



0
votes

J'ai conda, généralement j'ai cette erreur et ma solution était:

import os
os.environ['PROJ_LIB'] = '/home/YOUR_USER/anaconda3/share/proj'
from mpl_toolkits.basemap import Basemap
import cartopy.crs as crs


0 commentaires