ImportError: cannot import name get_ast_names error on lmfit

ImportError: cannot import name get_ast_names error on lmfit

我最近更新到 Ubuntu 18.04.1 LTS。之后我尝试 运行 我的一些 python 代码,但我得到了与 lmfit package 相关的错误,这是代码:

import scipy
from asteval import get_ast_names
import lmfit

(我已经明确添加了 scipy 和 asteval 模块来检查 python 是否正确地找到了它们) 我得到这个错误:

    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

这基本上表明 lmfit 无法从 asteval 中找到函数 get_ast_names,尽管 python 解释器在我尝试导入它时没有抱怨,因此它应该被正确安装。 我发现 this question 有类似的问题,评论中的人声称他通过 pip3 重新安装它解决了它,所以我尝试用 python3 编译它并且没有问题所以问题只涉及python2

有什么帮助吗?

我相信您的 lmfitasteval 的版本一定存在冲突。这个 应该 在安装 lmfit 时已经被自动注意到(并且理想地解决了),但是那里似乎出了问题。对于最新版本,您应该得到

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

根据您的安装方式,您可能需要在 $HOME/.local/lib/python2.7/site-packages/ 文件夹中检查并删除 asteval 的旧版本,然后重新执行 pip install asteval.