在Mac OSX上找不到Python模块。

3
我已经安装了一个名为python-firebase的Python模块,并使用命令sudo pip install python-firebase在我的Mac OSX 10.8.5上安装了pip。当我运行pip list时,它显示为python-firebase(1.2),但是当我运行我的Python脚本时,出现了以下错误:ImportError: no module named firebase
我认为这与Python路径有关,但是在阅读有关Python模块安装的文章后,我不知道应该查找哪里...
我正在~/Documents/Development/ProjectX中开发我的Python,它说已将python-firebase安装在/usr/local/lib/python2.7/site-packages/firebase/*中。
当我在终端上运行python并输入`from firebase import firebase'时,我没有收到未找到模块的错误。因此,在仿真器中它可以工作,但在我的Python脚本中却找不到它...
有任何想法的人吗?

3
你几乎肯定有两个Python 2.7的副本,一个是由苹果预装的,另一个是你自己安装的。你正在使用第二个Python的pip,但尝试用第一个运行你的代码。 - abarnert
你是如何安装第二个的?使用Homebrew吗?还是使用python.org安装程序?ActiveState?Enthought?或者手动从源代码构建? - abarnert
2
很简单:brew unlink python 将彻底将其移除,而不会实际删除任何内容(因此如果您以后改变主意,只需使用 brew link python 即可重新安装)。 - abarnert
我已经取消了Homebrew Python的链接,但仍然出现错误。你如何检查PYTHONPATH? - DeucePie
@DeucePie:你仍然出现错误的原因是你从未安装过Apple的Python包,只安装了Homebrew Python。重新安装一下吧。详见我的回答。 - abarnert
显示剩余9条评论
1个回答

5
听起来你已经安装了Homebrew Python 2.7,但实际上这是没有必要的,而且你不想处理有两个冲突版本的Python 2.7。在这种情况下,你应该这样做:
  • pip --list > packages.txt。这会列出你安装的所有软件包。
  • brew unlink python
  • sudo easy_install pip && sudo pip install --upgrade setuptools
  • 用文本编辑器打开packages.txt
  • sudo pip install [从packages.txt中所需的所有软件包]
    • 或者只需输入pip install -r packages.txt即可全部安装。

你可能需要考虑设置virtualenv或用户site-packages目录,这样你就不必一直进行sudo操作。尤其是如果你习惯于使用Homebrew。

使用brew unlinkbrew uninstall都可以将多余的Python 2.7删除,只能访问预安装的Apple版本,从而解决问题。但是,brew unlink并不会真正删除任何内容,因此如果你改变主意,可以使用brew link python恢复它。(或者,如果你以后确定永远不想回来,你始终可以以后brew uninstall python。)

此外,在任何其他情况下,这都是获取pip的错误方法,但是对于Apple在10.7到10.9中分发的Python版本,它似乎效果最好。随着较新版本的setuptools,这可能会发生变化。

最后,最后一个问题:你实际上需要Python 2.7而不是3.x吗?有很多原因答案可能是“是”,但如果不是,你可以安装Homebrew 3.4并与Apple 2.7并行使用,它们将不冲突; 你将得到单独命名为python3python3-configpip3ipython3等的程序。


谢谢你的帮助。我正在使用Firebase制作一个非常简单的应用程序,所以我可以使用3.x版本,我可能会通过Homebrew来了解它,因为你提到它们都有单独的程序。目前已经找到了该模块,所以我的代码现在正在运行。再次感谢! - DeucePie
1
sudo pip install -r packages.txt(如果您想要安装所有的包) - ManicDee
@ManicDee:谢谢。我不确定pip --list输出的格式是否适用于install -r。(我知道在1.2左右添加时它没有,那被列为一个需要修复的错误,但我从未测试过...) - abarnert
这不仅解决了我导入python-firebase时遇到的问题,还解决了几个月前我遇到的其他依赖问题。非常感谢您提供如此详细的答案。 - Keshav Saharia
brew unlink python 对我起了作用。 - huync

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