Python module incompatibilities - python-3.x

I have just installed gdal into my Python3 root environment using conda:
conda install -c conda-forge gdal
Installation went fine with the usual updates of some dependencies. Now returning to some of my scripts, both netCDF4 and mpl_toolkits.basemap have stopped working. These are the errors I get:
from netCDF4 import Dataset
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-7-09694a7f0e01> in <module>()
----> 1 from netCDF4 import Dataset
2 import numpy as np
3 import matplotlib.pyplot as plt
4 from scipy.interpolate import griddata
5 from mpl_toolkits.basemap import Basemap
/anaconda3/lib/python3.6/site-packages/netCDF4/__init__.py in <module>()
1 # init for netCDF4. package
2 # Docstring comes from extension module _netCDF4.
----> 3 from ._netCDF4 import *
4 # Need explicit imports for names beginning with underscores
5 from ._netCDF4 import __doc__, __pdoc__
ImportError: dlopen(/anaconda3/lib/python3.6/site-packages/netCDF4/_netCDF4.cpython-36m-darwin.so, 2): Library not loaded: #rpath/libhdf5.101.dylib
Referenced from: /anaconda3/lib/python3.6/site-packages/netCDF4/_netCDF4.cpython-36m-darwin.so
Reason: image not found
from mpl_toolkits.basemap import Basemap
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-8-5fb601138328> in <module>()
3 import matplotlib.pyplot as plt
4 from scipy.interpolate import griddata
----> 5 from mpl_toolkits.basemap import Basemap
6 import numpy.ma as ma
7 import glob
/anaconda3/lib/python3.6/site-packages/mpl_toolkits/basemap/__init__.py in <module>()
35 import numpy as np
36 import numpy.ma as ma
---> 37 import _geoslib
38 import functools
39
ImportError: dlopen(/anaconda3/lib/python3.6/site-packages/_geoslib.so, 2): Library not loaded: #rpath/libgeos-3.5.0.dylib
Referenced from: /anaconda3/lib/python3.6/site-packages/_geoslib.so
Reason: image not found
I have no idea what these errors mean, since those paths do exist. What is most baffling is that the netCDF4 and mpl_toolkits modules did not change (i.e. were not updated/downgraded) with the installation of gdal, so why now are they failing?
I'm at the end of my tether with problems like this. Fortunately I made a copy of my Python root directory before attempting this installation so I can now revert back to it (I've been here many times before).
I know about working in separate conda environments, but am I seriously supposed to install a new environment every time I want to use a new Python module? This not only takes up a lot of harddrive space but most inconveniently means adding new functionality to old codes is impossible (I want to use GDAL to plot some geotiffs using Basemap, which now does not work!).
I cannot imagine proficient Python users battling with these issues - so what am I doing wrong?

Related

Tensorflow Transformer Colab: AttributeError: module 'tensorflow_core' has no attribute 'compiler'

I tried to import the packages in the Transformer code in Transformer Colab Notebook. Is there a updated tensorflow core version?
from __future__ import absolute_import, division, print_function, unicode_literals
try:
!pip install tf-nightly-2.0-preview
except Exception:
pass
import tensorflow_datasets as tfds
import tensorflow as tf
import time
import numpy as np
import matplotlib.pyplot as plt
I got the following error.
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-9-22c51fa8bb84> in <module>()
5 except Exception:
6 pass
----> 7 import tensorflow_datasets as tfds
8 import tensorflow as tf
9
3 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/__init__.py in <module>()
96
97 # We still need all the names that are toplevel on tensorflow_core
---> 98 from tensorflow_core import *
99
100 # These should not be visible in the main tf module.
AttributeError: module 'tensorflow_core' has no attribute 'compiler'
The error is from not having tensorflow datasets installed. Use pip3 install tensorflow-datasets for installing and run the script again. Here is a useful TF-datasets offical link.

sklearn model_selection Error: ImportError: cannot import name '_approximate_mode'

I'm trying to import sklearn model_selection but I'm getting the following error:
ImportError Traceback (most recent call last)
<ipython-input-219-6bc6f0a77ca9> in <module>()
----> 1 import sklearn.model_selection
~/anaconda3/lib/python3.6/site-packages/sklearn/model_selection/__init__.py in <module>()
----> 1 from ._split import BaseCrossValidator
2 from ._split import KFold
3 from ._split import GroupKFold
4 from ._split import StratifiedKFold
5 from ._split import TimeSeriesSplit
~/anaconda3/lib/python3.6/site-packages/sklearn/model_selection/_split.py in <module>()
21
22 from ..utils import indexable, check_random_state, safe_indexing
---> 23 from ..utils import _approximate_mode
24 from ..utils.validation import _num_samples, column_or_1d
25 from ..utils.validation import check_array
ImportError: cannot import name '_approximate_mode'
I tried uninstalling scikit-learn and reinstalling it but I get the same error. My current version of scikit-learn is 0.21.2.
Thanks for the help!
I shutdown the kernel and restarted it again. Now it's working fine! Thanks!!
You are using python notebook. I found that error once when I have installed the package before importing. I have tested this at Google AI notebook and worked well.
Save the notebook -> shutdown the kernel -> close and open the notebook again.
You can restart the kernel or use the importlib library
from importlib import reload
sklearn= reload(sklearn)

import Axes3D issues

I'm using python 3.5 and i tried to import Axes3D from mpl_toolkitd.mplot3d but unfortunately i get this error:
In [1]: from mpl_toolkits.mplot3d import Axes3D
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-357f877dbd2b> in <module>()
----> 1 from mpl_toolkits.mplot3d import Axes3D
/usr/lib/python3/dist-packages/mpl_toolkits/mplot3d/__init__.py in <module>()
2 unicode_literals)
3
----> 4 from matplotlib.externals import six
5
6 from .axes3d import Axes3D
ImportError: No module named 'matplotlib.externals'
This might be arising due to duplicate installation of matplotlib in your system.
Usually pip installs all external packages to:
/usr/local/lib/python3.5/dist-packages/matplotlib
On the other hand, apt-get installs your packages in :
/usr/lib/python3/dist-packages/
Therefore, one way to resolve this would be try following (in order):
sudo apt-get remove python3-matplotlib
sudo pip3 install matplotib.

libgfortran.so.1: cannot open shared object file

I am very new to installing my own programs and packages on linux, so please be gentle ;)
I am working on Linux Mint 17.3 (Rosa) 64 bit (Ubuntu Trusty) and am trying to run through the scikitlearn tutorials located here:
https://github.com/savarin/pyconuk-introtutorial
I have installed all the relevant packages using:
pip install numpy pandas sklearn ipython
and everything looks great until I start trying to import some things from related packages i.e.
from scipy.stats import mode
I see the following error code:
sam#samputer ~/Desktop $ ipython
In [1]: from scipy.stats import mode
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-a8b1ace850b6> in <module>()
----> 1 from scipy.stats import mode
/home/sam/anaconda2/lib/python2.7/site-packages/scipy/stats/__init__.py in <module>()
336 from __future__ import division, print_function, absolute_import
337
--> 338 from .stats import *
339 from .distributions import *
340 from .morestats import *
/home/sam/anaconda2/lib/python2.7/site-packages/scipy/stats/stats.py in <module>()
178 from scipy._lib.six import callable, string_types
179 from numpy import array, asarray, ma, zeros
--> 180 import scipy.special as special
181 import scipy.linalg as linalg
182 import numpy as np
/home/sam/anaconda2/lib/python2.7/site-packages/scipy/special/__init__.py in <module>()
625 from __future__ import division, print_function, absolute_import
626
--> 627 from ._ufuncs import *
628
629 from .basic import *
ImportError: libgfortran.so.1: cannot open shared object file: No such file or directory
I'm also running into issues when I try to link through to R for visualisation. I add this as it may shed further light on the issue:
In [11]: %%R
....: library(ggplot2)
....:
/home/sam/anaconda2/lib/python2.7/site-packages/rpy2/robjects /functions.py:106: UserWarning: Error in library(ggplot2) : there is no package called ‘ggplot2’
res = super(Function, self).__call__(*new_args, **new_kwargs)
Error in library(ggplot2) : there is no package called ‘ggplot2’
If anyone can help me understand these issues and offer me some lines/links to fix them, I would be extremely grateful, as my googling hasn't made much progress.
Cheers!
If you're using Anaconda you should try installing packges with conda install first rather than pip install if you can — actually all of the the packages you installed come with the standard Anaconda distribution, so I would try reinstalling this first (did you install miniconda?)
For your second question I'm guessing you'll need to install ggplot in R, I think you do this by running install.packages("ggplot2") in R.

Using pytables with python3 fails

importing pytables (3.1.1) in python 3.4.1 fails for me, complaining about a failed cPickle import
i try to use potables (3.1.1) with python (3.4.1)
In [1]: import tables
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-389ecae14f10> in <module>()
----> 1 import tables
/work/projects/vEnv/lib/python3.4/site-packages/tables/__init__.py in <module>()
80
81 # Necessary imports to get versions stored on the cython extension
---> 82 from tables.utilsextension import (
83 get_pytables_version, get_hdf5_version, blosc_compressor_list,
84 blosc_compcode_to_compname_ as blosc_compcode_to_compname,
/work/projects/vEnv/lib/python3.4/site-packages/tables/utilsextension.pyx in init tables.utilsextension (tables/utilsextension.c:15600)()
/work/projects/vEnv/lib/python3.4/site-packages/tables/description.py in <module>()
22 import numpy
23
---> 24 from tables import atom
25 from tables.path import check_name_validity
26
/work/projects/vEnv/lib/python3.4/site-packages/tables/atom.py in <module>()
18 import sys
19 import inspect
---> 20 import cPickle
21
22 import numpy
As i understand cPickle is only used instead of pickle in python2.
As of PyTable 3.x it should work fine with python3.x. How can there be a cPickle import than?
What do i have to do to use pytables with python3?
The error was produced most likely due to a problem with my vEnv. Uninstalling the package and reinstalling it fix the problem.
See github issue

Resources