在Anaconda中安装了一个包,但在Python中无法导入

24

请原谅我,我对Python不熟悉。我使用conda install theano安装了一个包(theano),当我输入conda list时,该包存在。

但是,当我通过运行python进入Python解释器,并使用import theano尝试导入它时,我会收到一个错误:“没有名为theano的模块”,并且当我列出所有Python模块时,theano不存在。

我缺少了什么?


1
当您的PATH变量混乱且python无法启动Anaconda的Python解释器时,通常会出现此问题。 - cel
7个回答

7

可能是因为您的计算机上安装了多个Python环境。当您执行which python命令时,您可能会得到计算机中安装的原生Python,即 /usr/bin/python

您想使用Anaconda安装时附带的Python。只需将Anaconda路径添加到您的$PATH开头即可。 (为了做到这一点,您可能需要编辑您的~/.bashrc文件(或者您的shell的等效文件),然后运行source ~/.bashrc)。

下次您运行python并且import theano时,您将成功。


谢谢!运行得很顺利。 - KDogg
5
对我来说没有用,我遇到了完全相同的问题。 - bgenchel
17
我有同样的问题,但当我运行“which python”时,得到的是“/anaconda3/bin/python”,这应该意味着我已经在使用我的Anaconda Python-那为什么我还不能导入? - J.D
3
尽管我的路径设置正确并且在我的虚拟环境中完成所有操作,但我仍然遇到了相同的问题: 在文件t.py中:导入tensorflow;运行python t.py -> "ModuleNotFoundError: No module named 'tensorflow'"which python -> /home/gpetty/miniconda3/bin/python;conda install tensorflow -> # 所有请求的软件包已经安装。 - Grant Petty
一些conda包需要额外的Python封装器,例如nco和pynco包。这就是为什么有时候conda会非常误导人的原因。 - Chang
我的路径中首先列出了正确的环境,例如/opt/anaconda/anaconda3/envs/<env-name>/bin,但是在使用jupyter笔记本中的内核时仍然出现了这个错误。 - SumNeuron

6

当我遇到这个问题时,我的Python安装实际上缺少了"site-packages"路径引用。要解决/解决此问题,请执行以下操作。

  1. 从Anaconda目录中搜索您新安装的软件包并注意路径。(例如:C:\ Anaconda \ site-packages)
  2. 在终端中运行以下命令:
        python -c "import site; print(site.getsitepackages())"

示例输出: ['C:\Anaconda3', 'C:\Anaconda3\lib\site-packages']

  1. 如果步骤一中提到的路径不在列表中,则出现问题。快速解决方法是将新包移动到已列出的 site-packages 文件夹中或将缺少的路径添加到 PYTHONPATH 环境变量中。

如果您有兴趣管理自己的 "site-packages" 位置,请查看Python 文档了解设置站点配置文件的详细信息。


4
对我来说也是一样的。有任何想法为什么它会指向基本的site-packages而不是conda环境的site-packages? - Vinay
2
Vinay - 看起来这也是我的问题,但是我不明白为什么会发生这种情况?显然我不理解anaconda如何决定安排事情... - Ben Farmer

2

你的系统上是否安装了另一个版本的Python?你可以在终端中运行"which python"来确定将使用哪个版本的Python。


2

我曾经遇到过这个问题,后来发现原因是因为 ipythonjupyter-notebooksys.pathpython 不同。希望这能帮到其他人。


这对我很有帮助。值得检查的是pythonipython是否使用相同的Python版本。 - LeoC

1

我不小心解决了我的问题,现在只是想提供一个详细的方案。

当我尝试使用pip安装'pygsheets'时,我遇到了相同的问题。我使用anaconda环境。我可以看到它已经被

'成功安装'在'/usr/local/anaconda3/lib/python3.9/site-packages'。

然后输入以下内容:

which python

我得到的是:

/usr/local/anaconda3/bin/python

这不是我当前使用的路径,也不是我的解释器路径。
因此,我改变了 .zshrc 文件(不是 bash 环境,所以是 .zshrc )。但似乎我用了错误的代码进行更改。/usr/local/anaconda3/bin 被更改为软件包位置:/usr/local/anaconda3/lib/python3.9/site-packages
因此,当我 source 该文件时,遇到了错误:

__add_sys_prefix_to_path:6: command not found: dirname permission denied: /usr/local/anaconda3/lib/python3.9/site-packages

然后我改回了原来的路径。之后,which python 返回了我想要的路径:

/usr/local/anaconda3/envs/xxx/bin/python


1
所以我也遇到了同样的问题,结果发现我将自己的文件命名为相同的模块名称(graphviz),它试图导入那个文件而不是正确的模块...花了我一段时间才弄清楚!

0

我有一个基础环境,在其中使用conda安装了keras_vggface(sudo pip install git+https://github.com/rcmalli/keras-vggface.git:Courtesy: https://machinelearningmastery.com/how-to-perform-face-recognition-with-vggface2-convolutional-neural-network-in-keras/)。从base启动anaconda-navigator(在conda activate base之后),导入keras_vggface失败。

当取消激活base并在python命令行中时,导入正常工作。which python显示的是anaconda bin目录中的Python。现在,我在base中执行pip3 install keras_vggface

现在,我可以从base和python提示符以及通过anaconda-navigator从base启动的jupyter笔记本中导入模块。

注意:这不是关于如何完成的专业建议;请谨慎使用此经验。

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