Yup*_*pei 17 python pycharm python-3.x matplotlib-basemap
我尝试使用Basemap包来绘制PyCharm的地图,但是我遇到了问题
from mpl_toolkits.basemap import Basemap`
Run Code Online (Sandbox Code Playgroud)
跟踪追溯如下:
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'
Run Code Online (Sandbox Code Playgroud)
我对PyCharm上的这个错误感到困惑,因为相同的脚本在Jupyter或Spyder上运行正常!PyCharm的环境是../anaconda3/lib/python3.6,其中与anaconda相同.
有没有人遇到过这个错误?
任何人都可以帮我解决这个错误吗?
小智 15
关于mewahl的评论我已经添加到我的.bashrc(我使用bash):
导出PROJ_LIB =/path/to/your/instalation/of/anaconda/share/proj /
现在底图(和其他工作).
use*_*531 12
对于带有Anaconda + Python 3.71的Windows 10(我确定其他Python 3版本和Windows 7/8),您可以告诉Basemap Proj4的"epsg"文件要成功.我没有"环境"或其他任何东西,因为它需要做太多工作 - 所以我没有anaconda\share\proj区域(据我所知,为什么我没有它).
但是,Basemap想要的是文件"epsg",使用Windows资源管理器搜索Anaconda目录.如果找不到,请打开"Anaconda Prompt"并输入以下命令安装Proj4:
conda install -c conda-forge proj4
Run Code Online (Sandbox Code Playgroud)
如果找到它,它应该是这样的:
C:\ Utilities\Python\Anaconda\Library\Share(它是我的地方,以及\ pkgs\places我想它放置包本身 - 如果需要那些也可以工作,我最初使用它们,但是图书馆应该更好地完成更新(也许)).
在导入Basemap之前使用以下代码,它将起作用.将环境变量PROJ_LIB设置为epsg所在的位置,然后Basemap可以满意.
import os
os.environ["PROJ_LIB"] = "C:\\Utilities\\Python\\Anaconda\\Library\\share"; #fixr
from mpl_toolkits.basemap import Basemap
Run Code Online (Sandbox Code Playgroud)
作为一个很好的奖励,要获得Basemap的高分辨率数据,Anaconda不会在Basemap安装中包含,请输入"Anaconda Prompt":
conda install -c conda-forge basemap-data-hires
Run Code Online (Sandbox Code Playgroud)
Yus*_*tir 12
答案来自 Github,它对我有用。
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
Run Code Online (Sandbox Code Playgroud)
Mar*_*erc 11
这对我有用:
import os
os.environ["PROJ_LIB"] = os.path.join(os.environ["CONDA_PREFIX"], "share", "proj")
Run Code Online (Sandbox Code Playgroud)
这通过省略对 epsg 文件的路径进行硬编码来扩展 @Yusuf Baktir 的答案。这样代码就可以在任何安装了 conda 的机器上运行(当然也激活了)。
您必须将Proj lib的路径设置为较新的版本,此路径已被替换。导入matplot_toolkits之前,请编写以下两行代码
### For Window's Users
import os
os.environ['PROJ_LIB'] = r'C:\Users\XXXXX\Anaconda3\pkgs\proj4-5.2.0-
ha925a31_1\Library\share'
Run Code Online (Sandbox Code Playgroud)
要查找Proj_lib的路径,只需搜索epsg,然后复制此epsg文件位置并放入proj_lib中。您的问题将得到解决。
### For Linux's Users
import os
os.environ['PROJ_LIB'] = r'/home/XXXXXX/anaconda3/pkgs/proj4-5.2.0-
he6710b0_1/share/proj'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11228 次 |
| 最近记录: |