Search code examples
pythonimporterrorlmfit

ImportError: cannot import name get_ast_names error on lmfit


I have recently updated to Ubuntu 18.04.1 LTS. After that I tried to run some of my python codes and I got an error related to the lmfit package, here's the code:

import scipy
from asteval import get_ast_names
import lmfit

(I have explicitly added the scipy and asteval modules to check python was finding them porperly) I obtained this error:

    Traceback (most recent call last):
  File "/home/maurizio/Documents/Python/Programmini/PhD/TEAS/Test.py", line 3, in <module>
    import lmfit
  File "/home/maurizio/.local/lib/python2.7/site-packages/lmfit/__init__.py", line 42, in <module>
    from .confidence import conf_interval, conf_interval2d
  File "/home/maurizio/.local/lib/python2.7/site-packages/lmfit/confidence.py", line 12, in <module>
    from .minimizer import MinimizerException
  File "/home/maurizio/.local/lib/python2.7/site-packages/lmfit/minimizer.py", line 35, in <module>
    from .parameter import Parameter, Parameters
  File "/home/maurizio/.local/lib/python2.7/site-packages/lmfit/parameter.py", line 8, in <module>
    from asteval import Interpreter, get_ast_names, valid_symbol_name
ImportError: cannot import name get_ast_names

which basically states that lmfit cannot find the function get_ast_names from asteval, although the python interpreter doesn't complain when I try to import it so it should be properly installed. I have found this question with a similar problem and the guy in the comments claims he solved it by reinstalling it with pip3, so I tried to compile it with python3 and there's no problem so the issue concerns only python 2

Any help?


Solution

  • I believe you must have conflicting versions of lmfit and asteval. This should have been automatically noticed (and ideally resolved) when installing lmfit, but something there appears to have gone wrong. For the latest releases, you should get

    >>> import asteval 
    >>> asteval.__version__
    0.9.12
    >>> import lmfit
    >>> lmfit.__version__
    0.9.11
    

    Depending on how you installed these, you may need to check for and remove older versions of asteval in your $HOME/.local/lib/python2.7/site-packages/ folder and re-do pip install asteval.