向Spyder(Python IDE)添加一个模块(特别是pymorph)

69

我成功安装并在我的 Mac 上运行了 Spyder,但我想添加一些默认未包含的模块(mahotas 和 pymorph)。

我通过终端使用 easy_install 安装了这两个模块,在没有任何错误消息的情况下都安装成功。从终端运行 Python 并使用 import mahotasimport pymorph 命令可以正常工作且没有出现错误消息。然而,当我从 Spyder 中的脚本运行相同的命令时,会出现以下错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 493, in runfile
 execfile(filename, namespace)
File "/Users/Name/Documents/Python/dna.py", line 11, in <module>
 import pymorph
ImportError: No module named pymorph

我现在想做的就是运行导入代码,但似乎找不到相关信息。我猜测Spyder使用独立的Python安装程序,而通过终端安装模块只会将它们安装到系统版本的Python中。那我该如何将它们添加到Spyder中呢?

配置:

Mac OSX 10.7.4

Spyder 2.1.9

14个回答

110

好的,目前还没有人回答这个问题,但是我设法弄清楚了,并在spyder讨论版上发布后使其工作。对于任何想要添加但不包含在spyder默认搜索路径中的库,您需要进入工具并通过PYTHONPATH管理器为每个库添加路径。然后,您需要从同一菜单更新模块名称列表并重新启动spyder才能使更改生效。


13
谢谢 - 对我有用。但是,你不需要重新启动Spyder,只需关闭解释器,然后右键单击并"打开解释器"来重新启动Python解释器。新路径将被使用。 - Sanjay Manohar
1
一旦你实现了这个解决方案,似乎调用ibpy EReader文件的任何东西都可能在第29行失败,并显示“SyntaxError: cannot assign to None”。如果你遇到了这种情况,请删除或注释掉“None”。参考资料 - zelusp
在Spyder的Python路径管理器中添加路径后,我需要重新启动Anaconda。 - Quetzalcoatl
这在我的Windows上没有起作用。我不得不手动将包文件夹添加到“PATH”变量而不是“PYTHONPATH”变量中。 - Courvoisier
4
哇,那十分不便……谢谢! - Jim O.
显示剩余2条评论

66

在 Spyder 的 IPython 控制台中使用 ! 可以使用 pip。因此,在此示例中,您可以执行以下操作:

[1] !pip install pymorph
请注意,这也可以在Spyder 2.3.3之前的Python控制台上使用(尽管可能不可靠)。感谢@CarlosCordoba澄清信息。

2
看起来你正在使用旧版的Spyder。这个功能在一些版本之前就被移除了(我想是在2.3.3版本)。不过,类似的功能仍然可以在IPython控制台中使用。 - Carlos Cordoba
@CarlosCordoba 噢,好的。我正在使用2.2.5版本。很遗憾它被移除了 - 不过它仍然是一个很棒的IDE :-) - Lee
2
我们不得不从我们的Python控制台中删除它,因为它在所有情况下都不能可靠地工作(例如,在调试时会出现问题)。但是,正如我所说,您可以在我们的IPython控制台中运行完全相同的命令,它将正常工作 :-) - Carlos Cordoba
当我执行此操作时,会出现“/bin/sh:pip:命令未找到”的错误。版本为2.3.8。 - wlad
@jkabrg,你是否已经安装了pip点击此处进行安装。 - Lee
显示剩余4条评论

19
  1. 在终端中查找模块的位置:

    $ python # open python
    
    import pygame # import a module 
    
    pygame # get the location
    
  2. 将模块文件夹复制粘贴到'Spyder.app/Contents/Resources/lib/python2.7'中

  3. 重新启动Spyder.app


13

如果您正在使用Anaconda包中的Spyder...

在IPython控制台中使用

!conda install packageName

这也可以在本地工作。

!conda install /path/to/package.tar

注意:在Spyder内部使用IPython控制台时需要加上感叹号!


您也可以打开Anaconda提示符并在那里运行pip install <package_name>命令,在安装完成后,您可以从Spyder控制台重新加载内核->重新启动内核。 - zaf187

11

在 Spyder 终端中,只需在 pip 命令之前使用 '!',问题就可以解决。

例如:

!pip install imutils

5
我在尝试将seaborn模块添加到Spyder中时遇到了同样的问题。我在ubuntu 14.04上的anaconda目录中安装了seaborn模块。如果我添加了整个anaconda/lib/python2.7/site-packages/目录,就可以加载seaborn模块,其中包含“seaborn”和“seaborn-0.5.1-py2.7.egg-info”文件夹。问题是这个anaconda site-packages文件夹中还包含许多其他Spyder不喜欢的模块。
我的解决方案:我在个人Home文件夹中创建了一个名为“spyderlibs”的新目录,在其中放置了seaborn和seaborn-0.5.1-py2.7.egg-info文件夹。在Spyder的PYTHONPATH管理器中添加我的新spyderlib目录即可解决问题!

1
抱歉评论了一个旧答案,但我今天在使用Spyder和seaborn时遇到了完全相同的问题,在任何网站上都没有一个答案能够帮助我,除了你的答案。所以,谢谢你。 - la femme cosmique
作为我之前评论的补充(希望你看到了!),你是如何解决spyder解释器现在将seaborn的__init__.py视为我正在尝试使用的__init__.py的问题的?在这种情况下,它破坏了mpfit和其他一些东西。你有没有找到另一个解决方案? - la femme cosmique
我很高兴它在某种程度上起作用了。我不记得遇到过init.py问题,所以我不确定该推荐什么。最近我安装了一个新的操作系统,并且全新安装了Python 2.7、Anaconda和Spyder。现在Seaborn神奇地从一个全新的conda命令行安装中工作了 - 不再需要我上面提出的解决方法。 - Guy

3
您可以将标准安装位置添加到PYTHONPATH管理器中。这样,您就不需要为每个模块添加特定的路径,只需更新模块名称即可。
在Unix上,此位置通常为:

/usr/local/lib/pythonX.Y/site-packages

在Windows上:

C:\PythonXY\Lib\site-packages

请参见模块安装文档


1
将安装了Python模块的目录添加到PYTHONPATH管理器中
单击“同步”按钮,然后重新启动内核,您的程序应该可以正常工作。

spyderaddmodule


1

请尝试这个方法...

  1. 从CMD中获取您的Python版本enter image description here

  2. 确保您在Spyder内核中使用相同的版本enter image description here

如果版本不同,请从"工具>首选项>Python解释器>管理安装库的Python路径"中使其相同。


1
您可以运行:

pip install pymorph

但是你需要在你的环境的Anaconda终端中运行该命令。例如:

enter image description here


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