matplotlib / basemap

Plot on map projections (with coastlines and political boundaries) using matplotlib
MIT License
779 stars 392 forks source link

Add installation instructions for pip #433

Closed heitorPB closed 6 years ago

heitorPB commented 6 years ago

Several issues report problems with using pip install basemap. A workaround is using the latest version from Github.

Some issues with pip problems: #405 #403 #198 #251

heitorPB commented 6 years ago

Updated with @phobson suggestion.

WeatherGod commented 6 years ago

Does this method work in a clean environment? How does it handle the libgeos stuff?

To be honest, I'd rather promote the conda-forge approach to installing basemap. Or, even better, pip install cartopy.

heitorPB commented 6 years ago

Assuming you have pyproj installed, the pip command works. pyproj also has a pip install problem. I understood this method compiles the libgeos stuff included in the repo.

What is the advantage of conda-forge? IMHO, having several package managers is a nightmare. A quick browser in coda's documentation showed me that most packages I use are not available there. And they are in pip.

ocefpaf commented 6 years ago

Assuming you have pyproj installed, the pip command works. pyproj also has a pip install problem. I understood this method compiles the libgeos stuff included in the repo.

Ideally we should start building wheels for pyproj to facilitate the life of pip users. Basemap I'm not so sure due to the deprecation. We don't want to encourage people to use something that is at the end life support.

What is the advantage of conda-forge?

It is a collective of packages (5508) managed openly by the community:

https://anaconda.org/conda-forge/repo

IMHO, having several package managers is a nightmare.

Indeed. That is why people are moving to conda and using conda-forge for packages. It is platform and language agnostic. As it evolves it becomes the only package manager you will ever need. (Still rough around the edges with haskell, rust, and go. But great for Python and R.)

A quick browser in coda's documentation showed me that most packages I use are not available there. And they are in pip.

Not sure what you are using but take a look at the conda-forge channel package listing and not conda's documentation. Also, if a package is not there. It is relatively easy to add.

heitorPB commented 6 years ago

Oh, Basemap is being deprecated?

Ideally we should start building wheels for pyproj to facilitate the life of pip users.

I submitted a PR there with instruction to pip install pyproj from github as well. But wheels would be better.

ocefpaf commented 6 years ago

Oh, Basemap is being deprecated?

See the @WeatherGod's (the basemap maintainer) https://github.com/matplotlib/basemap/pull/433#issuecomment-432298598 and the EOL docs: https://matplotlib.org/basemap/users/intro.html#cartopy-new-management-and-eol-announcement

I submitted a PR there with instruction to pip install pyproj from github as well. But wheels would be better.

pip install from github and expecting to have the libs and compilers is too advanced for the average user. Building wheels are not that hard with the new technologies, but unfortunately that is up to the PyPI package authors/maintainers and many do not have the time to do that. That is why conda-forge is better, it is a community that not makes packaging easy to anyone who wishes to crate or maintain, not only the package authors/maintainers. Also, b/c most of the libs, like geos, gdal, proj.4, etc, are already package for Linux, Windows and OS X, so creating a python package that depended on those is not a burden.

matthew-brett commented 6 years ago

I can't say whether conda-forge is better, but there are a lot of packages using (my) https://github.com/matthew-brett/multibuild framework for wheel building. It's not completely trivial, but it's not that hard either. I'd guess about 3 -4 hours for the initial setup.

heitorPB commented 6 years ago

pip install from github and expecting to have the libs and compilers is too advanced for the average user.

I agree. Even though is a matter of copying and pasting, it's too advanced for the average user. Expecting them to read the [f] manual is not compatible with the reality :/ Learned that the hard way.

See the @WeatherGod's (the basemap maintainer) #433 (comment) and the EOL docs: https://matplotlib.org/basemap/users/intro.html#cartopy-new-management-and-eol-announcement

I was not aware of cartopy when I started a project, will see how difficult it is to adapt to it. I suggest to add a line in the README and in the documentation about this. So if someone finds Basemap in Google or somewhere else, they'll know that this project is at the end of life...

But while cartopy has not all Basemap's features, there should be an easy enough way to install it with pip.

ver0z commented 4 years ago

I solved this by uninstalling the conda and reinstalling, defining on installation the conda path on variable environment. After, at settings on your project, set the project interpreter to C:\Users\the_user_name\anaconda3\python.exe, then try to install the basemap. It was the only way I got this, after many tries and bugs with pip I tried with conda and that's it.