Conda列表显示了一个包但无法导入它

时间:2017-10-16 09:28:37

标签: python anaconda virtualenv

这是我在conda Virtual env上遇到的一个问题。我在带有Virtual Box的Windows 7主机上使用了ubuntu 64b guest虚拟机。

所以当我做的时候:

source activate MyVirtEnv
conda list |grep visdom
visdom                    0.1.05                        0    conda-forge

好像安装得对吗? 下一步:

python
Python 3.5.3 |Anaconda custom (64-bit)| (default, Mar  6 2017, 11:58:13) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import visdom
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'visdom'
>>> 

好的,我在这里迷路了。为什么python不能识别这个包(它不是唯一的包)。我执行python时仍然在我的env中激活。

我对python很陌生,所以也许我错过了一个很大的错误,请善待:D

感谢您对此的帮助!

更新1:

deeplearning@deep-learning-virtual-machine:~$ source activate universe
(universe) deeplearning@deep-learning-virtual-machine:~$ python
Python 3.5.3 |Anaconda custom (64-bit)| (default, Mar  6 2017, 11:58:13) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/deeplearning/anaconda3/envs/universe/lib/python35.zip', '/home/deeplearning/anaconda3/envs/universe/lib/python3.5', '/home/deeplearning/anaconda3/envs/universe/lib/python3.5/plat-linux', '/home/deeplearning/anaconda3/envs/universe/lib/python3.5/lib-dynload', '/home/deeplearning/anaconda3/envs/universe/lib/python3.5/site-packages', '/home/deeplearning/anaconda3/envs/universe/lib/python3.5/site-packages/Sphinx-1.5.6-py3.5.egg', '/home/deeplearning/gym', '/home/deeplearning/anaconda3/envs/universe/lib/python3.5/site-packages/torchvision-0.1.9-py3.5.egg']
>>> sys.executable
'/home/deeplearning/anaconda3/envs/universe/bin/python'
>>> 

8 个答案:

答案 0 :(得分:2)

似乎是与deps相关的问题,请参见github,因此,也许您应该确保Anaconda是最新的,以便使用所有最新的软件包发行版。为此,您应该首先更新conda实用程序运行:5,当系统提示您这样做时,键入y以继续进行更新。更新完成后,anaconda也将运行:conda update conda再次出现提示时,键入y继续,更新完成后,打开新终端并验证:conda update anaconda 和:conda --version

  • 现在尝试重新安装visdom:python --version或仅更新所有软件包:conda install -n universe visdom --force-reinstall

答案 1 :(得分:2)

根据List installed files of a package?检查为该软件包安装的文件,并将列表与您的sys.path进行比较。

特别是对于visdom,查看available Linux tarball的内容,我发现它包含类似lib/python3.6/site-packages的路径-即它适用于Python 3.6,而您的Python是3.5。

答案 2 :(得分:1)

我想到了几种可能性:

1。潜在的路径问题

您的python命令所引用的Python可能不同于活动conda环境文件夹中的python。通过在终端which condawhich python中运行来进行检查。如果您得到类似以下的内容,那么您在这里很好。

/anaconda3/bin/conda
/anaconda3/envs/<yourEnvName>/bin/python

如果获得不同的路径,则可能是您的路径混乱了。打开您的.bashrc文件,并仔细检查与pythonconda关联的行。

或者,重新安装conda。

2。非常令人生气的版本变体

您可能有版本/依赖性不兼容的问题。对于我来说,这似乎不太可能,因为visdom与以后的python 2.7兼容(我认为),并且您显然正在使用python 3.5.2。但是,如果您使用多个程序包管理器,则可能会发生这种情况。如今,这种情况已经不那么普遍了,但确实确实会偶尔发生。尝试通过运行pip show visdom和/或conda search --reverse-dependency visdom或程序包管理器的等效程序来进行检查。

如果这确实是一个问题,那么我建议您先更新您的软件包,如果这样不起作用,那么请使用原始软件包管理器卸载visdom,然后尝试使用其他软件包管理器进行安装。


如果以上所有方法均失败,请从新的环境开始研究您的问题。您可以在新环境中复制它吗? (我不能)您可以将其复制到另一台计算机上吗?等等...

请随时向互联网更新您的问题,因为我们也许可以帮助其他人!

答案 3 :(得分:1)

很遗憾,我没有“执行此操作以解决您的问题”解决方案,但我建议采取以下步骤。许多似乎很明显,但是我发现在解决这些问题时,您必须先确定每一步,然后再继续。

  1. 主机系统(在本例中为Ubuntu VM)是否安装了多个版本的python?您确定使用的是您认为的版本吗?您检查路径变量了吗?您需要确保使用的是conda安装。
  2. 主机系统是否安装了不同版本的conda?
  3. 您似乎在激活的环境中检查过conda中列出的软件包。但是它在您的虚拟环境的package目录中吗?一种检查方法是使用find命令并指定虚拟环境的基本路径。
  4. 尝试强制重新安装软件包。
  5. 尝试使用pip代替conda。如果您的环境设置正确,pip应该将软件包安装到conda路径。

更多绝望的步骤

  1. 创建一个新的虚拟环境。逐一添加软件包。检查每个软件包的变化。
  2. 重新安装conda。
  3. 创建虚拟机的新实例。
  4. 从其他映像中创建虚拟机实例。
  5. 制作自己的图片。

这只是解决问题的一种方法。如果可能,尽量避免执行步骤6-10,因为它们会涉及到很多步骤。那就是说有时是虚拟机而不是您的问题。

答案 4 :(得分:0)

文件系统权限可能有问题。如果您在root下安装了软件包,则可能会发生这种情况。尝试运行

sudo chmod -R a+rX /home/deeplearning/anaconda3/envs/

如果您sudo在VM终端中,请放下root

答案 5 :(得分:0)

意识到这是一个非常老的问题,但是在OSX的基本环境上执行conda更新conda之后,我也发生了同样的事情,并且程序包是numpy。显示在conda列表中,但无法导入。我做了什么,将其修复:

conda activate base
conda remove numpy
conda install numpy

这可以解决问题。

答案 6 :(得分:0)

我遇到相同的问题,并尝试了所有给定的解决方案来解决此问题,但这些解决方案对我不起作用。
最后,我将软件包安装目录添加到sys.path:

import sys  
sys.path.apend('/Users/eng/anaconda3/envs/paddle/lib/python2.7/site-packages')

它起作用了。

答案 7 :(得分:0)

我在另一篇文章中回答了这个问题:

https://stackoverflow.com/a/65584502/4667568


我在 conda 环境中遇到了这个问题。原因是软件包已安装到两个不同的文件夹中,而 Python 可执行文件只能识别其中之一。

~/anaconda2/envs/[my_env]/site-packages ~/anaconda2/envs/[my_env]/lib/python2.7/site-packages

一个行之有效的解决方案是将两个文件夹都添加到 python 路径中,在命令行中使用以下步骤(请将 [my_env] 替换为您自己的环境):

conda 激活 [my_env]。 conda-develop ~/anaconda2/envs/[my_env]/site-packages conda-develop ~/anaconda2/envs/[my_env]/lib/python2.7/site-packages(conda-develop 是在文件夹中添加一个.pth 文件,以便 Python 可执行文件在搜索包时知道该文件夹。 ) 为确保此工作正常,请尝试在此环境中激活 Python,并导入未找到的包。