Anaconda无法导入已安装的matplotlib-venn软件包

3
我快要放弃Anaconda了。以前用pip管理软件包从来没有问题,只是因为现在有一个包无法使用pip获取,而且我听到了很多好的评价,所以才想尝试一下Anaconda。
我无法导入刚刚用Anaconda安装的软件包,类似于this,但是在MacOS上而不是在Windows上。
我真的不想有多个环境,除非必须要有它们。我希望能够从同一个脚本中运行大部分/全部的软件包。我有一个名为py37的虚拟环境,我已经将大部分东西放在那里了。除了其他软件包之外:
(py37) jennifers-mbp:~ jenniferlongdiaz$ conda list
#packages in environment at /anaconda3/envs/py37:
#
# Name                    Version                   Build  Channel    
matplotlib-venn           0.11.5                     py_1    conda-forge
numpy                     1.15.3           py37h6a91979_0  
python                    3.7.1                haf84260_3  

Python正确安装到了右侧:
(py37) jennifers-mbp:~ jenniferlongdiaz$ which python
/anaconda3/envs/py37/bin/python
(py37) jennifers-mbp:~ jenniferlongdiaz$ python
Python 3.7.1 (default, Oct 23 2018, 14:07:42) 
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.

我可以导入numpy但无法导入matplotlib-venn:
>>> import numpy as np
>>> import matplotlib_venn as venn

一堆东西,然后是:
ImportError: cannot import name 'get_backend' from 'matplotlib' (/anaconda3/envs/py37/lib/python3.7/site-packages/matplotlib/__init__.py)

同样地:
>>> from matplotlib import get_backend

一堆东西,然后是:
ImportError: cannot import name 'get_backend' from 'matplotlib' (/anaconda3/envs/py37/lib/python3.7/site-packages/matplotlib/__init__.py)

从IDE Spyder中((py37)jennifers-mbp:〜jenniferlongdiaz $ spyder),我得到:
In [1]: import matplotlib_venn as venn
Traceback (most recent call last):

  File "<ipython-input-9-aafbc15b97e7>", line 1, in <module>
    import matplotlib_venn as venn

ModuleNotFoundError: No module named 'matplotlib_venn'

请帮忙!

这里有两个问题。一个是 matplotlib_venn 可能依赖于早期版本的Matplotlib,该版本中具有该函数,但他们没有在其设置文件中正确指定该版本(请参见 https://github.com/konstantint/matplotlib-venn/blob/c26796c9925bdac512edf48387452fbd1848c791/setup.py#L48)。第二个问题是,如果您想要从该环境中导入包,则需要将Spyder安装到该环境中。 - undefined
Spyder已安装在py37中,这是我正在使用的地方,请参考上面。 - undefined
请显示conda list的完整输出。如果在基本环境中安装了Spyder,即使在py37环境中没有安装它,它仍然可以运行!它只会选择错误的软件包。这是因为PATH环境变量的工作方式。 - undefined
明白了,你说得对,它正在运行基本的Spyder。重新启动终端并使用conda安装Spyder后,现在一切都正常了。不确定Matplotlib出了什么问题。如果你回答了,我会接受的。 - undefined
看起来@Michael已经得到了答案,随意接受他们的回答。 - undefined
1个回答

3
根据matplotlib-venn的PyPi页面(https://pypi.org/project/matplotlib-venn/),导入应该像这样:
import matplotlib_venn as venn

请注意,该模块的命名使用下划线,而包的命名使用破折号;这是一个棘手的不一致之处。
更新已更新的问题:Spyder的问题是由于Spyder未作为Anaconda的一部分安装,导致系统的Spyder不知道Anaconda环境的软件包。无法从matplotlib导入get_backend会暗示缺少或损坏的matplotlib安装。这两个都只需要使用conda安装(或重新安装)软件包即可。

你是100%正确的,但不幸的是,那个错误是我在重现我遇到的错误时打错的字造成的,而不是困扰我的错误。我会进行编辑。 - undefined
Spyder现在找不到模块了?这是安装在你的Anaconda区域的同一个Spyder吗?给我们看一下哪个模块。 - undefined
另外,你能够在Python中执行from matplotlib import get_backend吗? - undefined
1
哦,我刚刚仔细检查了你的conda列表:matplotlib没有安装。尝试使用conda安装它,并再次导入matplotlib_venn。我还怀疑你的spyder不知道你的anaconda环境(因为你的conda列表中没有显示它,所以它可能与anaconda没有关联),所以它不知道你的任何软件包在哪里。尝试运行"conda install spyder"将spyder安装到你的anaconda环境中。 - undefined
matplotlib实际上是存在的(我没有粘贴完整的conda list输出,因为它非常长),但spyder却不存在。重新启动终端并安装了spyder,现在不知何故它可以工作了。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接