47

I have troubles to import the basemap module of mpl_toolkits in python. Here is what I get when I run the test.py script from the module directory:

/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

I can't get it since sys.path gives a list of paths where I am sure the directory "basemap" is, in the "mpl_toolkits" directory. There is no problem to import mpl_toolkits. Here is a thing I tried, to manually add the path, and the result:

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

I tried to uninstall an reinstall basemap from source (carefully following these instructions), from apt-get, from conda, but it does not change anything: I can't import basemap.

Thank you for your help

Arnaud BUBBLE
  • 677
  • 1
  • 6
  • 10

18 Answers18

48

I was in the same situation until a minute ago, installing it through this made the trick:

sudo apt-get install libgeos-3.5.0
sudo apt-get install libgeos-dev
pip install https://github.com/matplotlib/basemap/archive/master.zip
Akima
  • 588
  • 4
  • 10
  • 11
    I googled and tried everything I could to get 'from mpl_toolkits.basemap import Basemap' to actually work and your answer was the only one that was successful for me. I am using python 3.6 and I only had to run the pip install line. Anyhow, thanks! – CodeGuyRoss Apr 02 '18 at 19:58
  • There are a few other solutions for this problem that are available in Stackoverflow but this is perhaps the only one that works on Google's Colab platform. Hence this solution is very useful. – Calcutta Jul 22 '18 at 09:39
  • I don't actually see why this should work any differently than running `python setup.py build` and `sudo python setup.py install` in a shallow clone of the repository. What's the magic sauce? Is it the specific version of libgeos? – Translunar Sep 05 '18 at 16:17
  • This worked without the 'sudo apt-get install libgeos-3.5.0' – Edward Hartnett Aug 18 '19 at 12:46
  • 1
    You sir, are the MVP. Had to change `libgeos-3.5.0` to `libgeos-3.6.2` though (but it is 3.5 years later). – compuphys Apr 28 '20 at 20:55
  • DO NOT use `sudo pip`! [Source](https://pages.charlesreid1.com/dont-sudo-pip/), [source](https://stackoverflow.com/questions/15028648/is-it-acceptable-and-safe-to-run-pip-install-under-sudo), [source](https://dev.to/elabftw/stop-using-sudo-pip-install-52mn). – zabop Sep 02 '20 at 14:51
  • This gives me the error: `E: Unable to locate package libgeos-3.5.0 E: Couldn't find any package by glob 'libgeos-3.5.0' E: Couldn't find any package by regex 'libgeos-3.5.0'` – zabop Feb 07 '22 at 12:09
35

I was facing this issue and I was able to solve it using anaconda

After activating my profile

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()

BlueMarble format of basemap

Anant Gupta
  • 1,090
  • 11
  • 11
18

I do not use Anaconda, using MacOS, and I have found this solution works for me. I guess it is straight forward, and should work with both Linux and MacOs.

https://stackoverflow.com/a/53171723/2570842

brew install geos
pip3 install https://github.com/matplotlib/basemap/archive/master.zip

For Ubuntu,

sudo apt-get install geos
sudo pip3 install https://github.com/matplotlib/basemap/archive/master.zip
beahacker
  • 1,660
  • 14
  • 10
  • For RHEL/Centos7 this didn't fully work for me. What worked was: `sudo yum -y install geos-devel; wget https://github.com/matplotlib/basemap/archive/refs/heads/master.zip; unzip master.zip; cd basemap-master/packages/basemap; python -m pip install .;` Test command: `python -c "from mpl_toolkits.basemap import Basemap"` – Prachi May 09 '22 at 17:51
11

I had the same issue; trying to access basemap using sys would produce that error. But this worked for me:

import mpl_toolkits
mpl_toolkits.__path__.append('/usr/lib/python2.7/dist-packages/mpl_toolkits/')
from mpl_toolkits.basemap import Basemap
GStav
  • 1,066
  • 12
  • 20
  • 7
    I hate it when you have a problem and people ignore it and just say "just add UNKNOWN REPOSITORY to your trusted sources and install xyz". that's not a true solution, it's a dirty workaround (and even the accepted answer, lol). I'm not sure about the cause of the problem but this one seems to tackle the problem by its root. thanks! – user3182532 Aug 25 '17 at 08:08
9

For me, a simple

pip3 install basemap

did the trick.

zabop
  • 6,750
  • 3
  • 39
  • 84
  • 2
    Yes, that worked for me too! (on windows environment) A simple `pip install basecamp` followed by `from mpl_toolkits.basemap import Basemap` – Shahstewart Apr 20 '22 at 15:43
  • 1
    Appears to have worked for me on an M1 Mac. Thanks! I did get a warning re boundary dataset file, and instructions to download high and full resolution datasets from the basemap-data-hires package. I grabbed this here: https://pypi.org/project/basemap-data-hires/ – Dan Taninecz Miller Aug 05 '22 at 17:45
  • 1
    If you've already installed `geos` and `pip install basemap` still isn't working, make sure that your `GEOS_DIR` environment variable is pointing to the right place. In my case, running the latest version of `geos` installed via Homebrew on macOS, that requires running `export GEOS_DIR=/usr/local/Cellar/geos/3.11.0/` (or `set -Ux GEOS_DIR /usr/local/Cellar/geos/3.11.0/` if you use Fish) – Cosmo Oct 19 '22 at 18:57
3

Download it from here and install it manually. Make sure to download the right version(i.e. if you are Python3.6 then download basemap‑1.2.0‑cp36‑cp36m‑win_amd64.whl)

Reference: https://stackoverflow.com/a/33020524/8730201

3

In my Case It works

sudo apt install python3-mpltoolkits.basemap

Mahmudul Hassan
  • 357
  • 3
  • 10
2

conda install -c anaconda basemap

OR

Go to Anaconda Navigator, search for basemap and click Apply.

Anaconda Navigator Screenshot

enter image description here

Jade Cacho
  • 691
  • 6
  • 9
2

This will help you :

!pip install basemap
!pip install basemap-data

you can check this notebook for more information:

for more examples of machine learning algorithms please visit:

kadamb
  • 1,532
  • 3
  • 29
  • 55
1

I followed this answer:

https://stackoverflow.com/a/43234894/3818277

Though, I can have wrongly installed mpl_toolkits (or I do not know), in my case I found out, that basemap is located in pymodules like that:

    mpl_toolkits.__path__.append('/usr/lib/pymodules/python2.7/mpl_toolkits/')
    from mpl_toolkits.basemap import Basemap

So this worked for me on ubuntu 14.04 LTS.

weatherman
  • 100
  • 1
  • 12
1

After a day of trying different methods, this worked for me:

conda install -c conda-forge basemap
Golpira
  • 11
  • 1
1

The only solution that worked for windows.

Download wheel package from here: https://www.lfd.uci.edu/~gohlke/pythonlibs/#basemap Navigate to download location in terminal. Install using pip install

ar-siddiqui
  • 161
  • 1
  • 8
0

I was able to get basemap working through the following steps. Note that I did a --user install.

  1. Create shallow clone of basemap (git clone --depth 1 git@github.com:matplotlib/basemap.git) or extract the tarball of the current version.
  2. Install the necessary prerequisite libraries (on Ubuntu, libgeos-dev, libproj-dev, libgeos++-dev, proj-data, proj-bin, libgeos-c1v5, libgeos, libproj12, I think).
  3. pip install --user pyproj matplotlib geos (not actually sure if geos is necessary).

Now, here's where I had to improvise a little bit. When I install basemap using python setup.py install, it creates a new egg directory among my Python packages. That directory contains an mpl_toolkits subdirectory which duplicates a separate mpl_toolkits directory installed by matplotlib.

So, instead, I did

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

I am now able to run examples like simpletest.py.

Translunar
  • 3,739
  • 33
  • 55
0

I faced the same problem. Couldn't import the Basemap:

from mpl_toolkits.basemap import Basemap

but surprisingly Pycharm saw the library which was apparently installed in this location:

lib/python3.8/site-packages/basemap-1.2.1-py3.8-linux-x86_64.egg/mpl_toolkits/basemap/

So, to make it work, I just created a symbolic link in lib/python3.8/site-packages/mpl_toolkits/:

ln -s ../basemap-1.2.1-py3.8-linux-x86_64.egg/mpl_toolkits/basemap/ basemap

I know it's not a clean solution, but may be sufficient in some cases.

0

On Colab you might have to add the basemap module to mpl_toolkits

!pip install basemap
from mpl_toolkits import basemap

At least, I had the same problem and this worked for me.

Omar Cusma Fait
  • 313
  • 1
  • 11
0

For Windows:

To install basemap you need to download the wheel file from this path:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#basemap

for python 3.10 this will be the file:

basemap‑1.3.2‑cp310‑cp310‑win_amd64.whl

Then you have to go to the folder where the above mentioned .whl file is saved and run this command from there:

pip install basemap‑1.3.2‑cp310‑cp310‑win_amd64.whl


For Mac OS please refer:

https://github.com/matplotlib/basemap/releases:

Make sure you have:

brew install geos
brew install matplotlib
brew install numpy
brew install proj

Add export GEOS_DIR="/user/local/Cellar/geos/3.10.2/" to your .bash profile and reload it via:

source ~/.bash_profile

git clone --depth 1 https://github.com/matplotlib/basemap.git

then in the basemap/packages/basemap directory

pip3 install


For Colab there are slight variation from Akima's answer since its been a while:

!sudo apt-get install libgeos-3.6.2
!sudo apt-get install libgeos-dev
!pip install git+https://github.com/matplotlib/basemap#subdirectory=packages/basemap

enter image description here

enter image description here

Talha Tayyab
  • 8,111
  • 25
  • 27
  • 44
-1

If you're using Anaconda, it has a package for basemap

conda install basemap

(pip doesn't have the basemap package any more)

OR

If you using Ubuntu system you can try

apt install python3-mpltoolkits.basemap

Santosh
  • 54
  • 6
-1

I had trouble with that. Fortunately, I solved the problem. Firstly, I suggest you to set Anaconda up, if you don't have. Then follow steps below;

  • Create a new environment in anaconda.
  • Install Jupyter Notebook and launch it. If it works, turn it off.
  • Change your anaconda environment in your terminal.
  • Try installation commands below; conda install basemap conda install forge ... pip install basemap
onur
  • 11
  • 2