Python 底图模块无法导入
Posted
技术标签:
【中文标题】Python 底图模块无法导入【英文标题】:Python basemap module impossible to import 【发布时间】:2017-03-15 10:34:17 【问题描述】:我在 python 中导入 mpl_toolkits 的底图模块时遇到了麻烦。这是我从模块目录运行 test.py 脚本时得到的结果:
/usr/lib/python2.7/dist-packages/mpl_toolkits/basemap$ python test.py
Traceback (most recent call last):
File "test.py", line 1, in <module>
from mpl_toolkits.basemap import Basemap, shiftgrid
ImportError: No module named basemap
我无法得到它,因为sys.path
在“mpl_toolkits”目录中给出了我确定目录“basemap”所在的路径列表。 import mpl_toolkits
没有问题。这是我尝试过的,手动添加路径,结果:
>>> import sys
>>> sys.path.append('/usr/lib/python2.7/dist-packages/mpl_toolkits/basemap')
>>> import basemap
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "basemap/__init__.py", line 30, in <module>
from mpl_toolkits.basemap import pyproj
ImportError: No module named basemap
我尝试从源代码(仔细遵循these 说明)、apt-get、conda 卸载重新安装的底图,但它没有改变任何东西:我无法导入底图。
感谢您的帮助
【问题讨论】:
你是在哪个环境下安装的? 你解决了吗?我也面临同样的问题 【参考方案1】:唯一适用于 Windows 的解决方案。
从这里下载***包:https://www.lfd.uci.edu/~gohlke/pythonlibs/#basemap 导航到终端中的下载位置。 使用 pip install 安装
【讨论】:
【参考方案2】:我遇到了同样的问题。无法导入底图:
from mpl_toolkits.basemap import Basemap
但令人惊讶的是,Pycharm 看到了显然安装在此位置的库:
lib/python3.8/site-packages/basemap-1.2.1-py3.8-linux-x86_64.egg/mpl_toolkits/basemap/
所以,为了让它工作,我刚刚在lib/python3.8/site-packages/mpl_toolkits/
中创建了一个符号链接:
ln -s ../basemap-1.2.1-py3.8-linux-x86_64.egg/mpl_toolkits/basemap/ basemap
我知道这不是一个干净的解决方案,但在某些情况下可能就足够了。
【讨论】:
【参考方案3】:直到一分钟前我都处于同样的情况,通过这个安装它就成功了:
sudo apt-get install libgeos-3.5.0
sudo apt-get install libgeos-dev
pip install https://github.com/matplotlib/basemap/archive/master.zip
【讨论】:
我在谷歌上搜索并尝试了所有我能得到的“从 mpl_toolkits.basemap 导入底图”来实际工作,而您的答案是唯一对我来说成功的答案。我使用的是 python 3.6,我只需要运行 pip install 行。无论如何,谢谢! *** 中还有一些其他解决方案可以解决这个问题,但这可能是唯一适用于 Google 的 Colab 平台的解决方案。因此这个解决方案非常有用。 我实际上不明白为什么这与在存储库的浅层克隆中运行python setup.py build
和 sudo python setup.py install
有什么不同。什么是魔法酱?是不是特定版本的libgeos?
这在没有 'sudo apt-get install libgeos-3.5.0' 的情况下工作
你先生,是MVP。不得不将libgeos-3.5.0
更改为libgeos-3.6.2
(但已经过了 3.5 年)。【参考方案4】:
在尝试了一天不同的方法之后,这对我有用:
conda install -c conda-forge basemap
【讨论】:
【参考方案5】:在我的情况下它有效
sudo apt install python3-mpltoolkits.basemap
【讨论】:
【参考方案6】:conda install -c anaconda basemap
或
转到 Anaconda Navigator,搜索 basemap
并点击应用。
【讨论】:
【参考方案7】:如果你使用 Anaconda,它有一个底图包
conda 安装底图
(pip 已经没有底图包了)
或
如果你用的是Ubuntu系统可以试试
apt install python3-mpltoolkits.basemap
【讨论】:
【参考方案8】:我不使用 Anaconda,使用 MacOS,我发现这个解决方案对我有用。我想这很简单,应该适用于 Linux 和 MacO。
https://***.com/a/53171723/2570842
brew install geos
pip3 install https://github.com/matplotlib/basemap/archive/master.zip
对于 Ubuntu,
sudo apt-get install geos
sudo pip3 install https://github.com/matplotlib/basemap/archive/master.zip
【讨论】:
【参考方案9】:从here 下载并手动安装。确保下载正确的版本(即如果您是 Python3.6,则下载 basemap‑1.2.0‑cp36‑cp36m‑win_amd64.whl)
参考:https://***.com/a/33020524/8730201
【讨论】:
【参考方案10】:我遵循了这个答案:
https://***.com/a/43234894/3818277
虽然,我可能错误地安装了 mpl_toolkits(或者我不知道),但就我而言,我发现底图位于 pymodules 中:
mpl_toolkits.__path__.append('/usr/lib/pymodules/python2.7/mpl_toolkits/')
from mpl_toolkits.basemap import Basemap
所以这在 ubuntu 14.04 LTS 上对我有用。
【讨论】:
【参考方案11】:我能够通过以下步骤获得底图。请注意,我安装了--user
。
-
创建底图的浅层克隆 (
git clone --depth 1 git@github.com:matplotlib/basemap.git
) 或提取当前版本的 tarball。
安装必要的必备库(在 Ubuntu 上,libgeos-dev
,libproj-dev
,libgeos++-dev
,proj-data
,proj-bin
,libgeos-c1v5
,libgeos
,libproj12
,我想)。李>
pip install --user pyproj matplotlib geos
(不确定是否需要geos
)。
现在,这是我不得不即兴发挥的地方。当我使用python setup.py install
安装底图时,它会在我的 Python 包中创建一个新的 egg 目录。该目录包含一个 mpl_toolkits
子目录,它复制了一个由 matplotlib 安装的单独的 mpl_toolkits
目录。
所以,相反,我做到了
python setup.py build_ext --inplace
cp -a lib/mpl_toolkits/basemap /my/python/packages/dir/mpl_toolkits/basemap
cp lib/_geoslib.so /my/python/packages/dir
我现在可以运行 simpletest.py
之类的示例。
【讨论】:
【参考方案12】:我有同样的问题;尝试使用 sys 访问底图会产生该错误。但这对我有用:
import mpl_toolkits
mpl_toolkits.__path__.append('/usr/lib/python2.7/dist-packages/mpl_toolkits/')
from mpl_toolkits.basemap import Basemap
【讨论】:
我讨厌你遇到问题而人们忽略它并只是说“只需将 UNKNOWN REPOSITORY 添加到您信任的来源并安装 xyz”。这不是一个真正的解决方案,这是一个肮脏的解决方法(甚至是公认的答案,哈哈)。我不确定问题的原因,但这似乎从根本上解决了问题。谢谢!【参考方案13】:我遇到了这个问题,我可以使用 anaconda 解决它
激活我的个人资料后
source activate MyProfileName
conda install basemap
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# setup Lambert Conformal basemap.
# set resolution=None to skip processing of boundary datasets.
m = Basemap(width=12000000,height=9000000,projection='lcc',
resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
m.bluemarble()
plt.show()
【讨论】:
以上是关于Python 底图模块无法导入的主要内容,如果未能解决你的问题,请参考以下文章
AWS Lambda python 错误:Runtime.ImportModuleError:无法导入模块“app”:无法从“pyparsing”导入名称“operatorPrecedence”