【问题标题】:Conda list shows a package but cannot import itConda 列表显示一个包但无法导入它
【发布时间】:2018-03-27 18:42:49
【问题描述】:

这是我在 conda 虚拟环境中遇到的一个问题。我在带有 Virtual Box 的 Windows 7 主机上使用 ubuntu 64b 来宾。

所以当我在做的时候:

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 时,我仍在激活的环境中。

我对 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'
>>> 

【问题讨论】:

  • MyVirtEnv环境下是否安装了Python?您正在运行的 Python 的 sys.pathsys.executable 的输出是什么?
  • 是的,当然安装了 python 我用你要求的文本条目更新了帖子
  • 您的环境名称是什么?在顶部的示例中,您使用MyVirtEnv,但在下面的输出中,环境名称似乎是universe
  • 我的环境名称是 Universe(MyVirtEnv 是通用名称)
  • 那么您能否显示您运行以列出软件包的实际命令的输出?例如,你能conda list -n universe | grep visdom吗?

标签: python anaconda virtualenv


【解决方案1】:

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

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,然后导入未找到的包。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,并尝试了所有给定的解决方案来解决这个问题,但它们对我不起作用。
    最后我只是将包安装目录添加到 sys.path:

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

    成功了。

    【讨论】:

      【解决方案3】:

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

      conda activate base
      conda remove numpy
      conda install numpy
      

      这解决了问题。

      【讨论】:

        【解决方案4】:

        很遗憾,我没有“这样做来解决您的问题”的解决方案,但我建议您执行以下步骤。许多看起来很明显,但我发现在解决这些问题时,您必须先确定每一步,然后再继续。

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

        更绝望的步骤

        1. 创建一个新的虚拟环境。一个一个地添加包。检查每个包的变化。
        2. 重新安装 conda。
        3. 创建一个新的虚拟机实例。
        4. 从不同的映像创建一个 vm 实例。
        5. 制作自己的图像。

        这只是解决问题的一种方法。如果可能,尽量避免步骤 6-10,因为它们相当复杂。也就是说,有时这是虚拟机的问题,而不是你的问题。

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

            我想到了几种可能性:

            1。一个潜在的路径问题

            您的python 命令可能与您的活动 conda 环境文件夹中的python 引用不同的 python。通过在终端 which condawhich python 中运行来检查这一点。如果你得到类似下面的东西,你就很好了。

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

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

            或者,重新安装 conda。

            2。一个非常令人烦恼的版本变化

            您可能遇到版本/依赖项不兼容问题。这对我来说似乎不太可能,因为visdompython 2.7 兼容(我认为)并且您显然正在使用python 3.5.2。尽管如此,如果您使用多个包管理器,这可能会发生。现在这种情况不太常见,但偶尔会发生。尝试通过运行 pip show visdom 和/或 conda search --reverse-dependency visdom 或您的包管理器的等效项来检查这一点。

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


            如果以上所有方法都失败了,请从新环境开始探索您的问题。你能在新环境中复制它吗? (我不能)。你能在另一台机器上复制它吗?等等……

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

            【讨论】:

            【解决方案7】:

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

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

            如果您在 VM 终端中是 root,请删除 sudo

            【讨论】:

              【解决方案8】:

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

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

              【讨论】:

                猜你喜欢
                • 2021-01-19
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-08-23
                • 1970-01-01
                • 2018-01-10
                • 1970-01-01
                • 2018-07-21
                相关资源
                最近更新 更多