在Mac OSX上找不到Python模块
我在我的Mac OSX 10.8.5上安装了一个叫做 python-firebase 的Python模块,并通过命令 sudo pip install python-firebase
安装了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脚本里却找不到这个模块...
有没有人有什么想法?
1 个回答
听起来你安装了一个 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 unlink
或 brew uninstall
都可以把多余的 Python 2.7 移除,这样就只剩下苹果预装的版本了,问题也就解决了。不过,使用 brew unlink
并不会真正删除任何东西,如果你改变主意,可以用 brew link python
把它找回来。(或者,如果你确定以后不想再用了,可以随时用 brew uninstall python
。)
另外,在其他情况下,这种方式获取 pip
是不对的,但对于苹果在 10.7 到 10.9 版本中分发的 Python 版本,这种方法似乎效果最好。随着 setuptools
的更新,这种情况可能会改变。
最后,再问你一句:你真的需要 Python 2.7 而不是 3.x 吗?有很多理由可能让你回答“是”,但如果不是的话,你可以在苹果的 2.7 旁边安装一个 Homebrew 的 3.4,它们不会冲突;你会得到分别叫 python3
、python3-config
、pip3
、ipython3
等的独立程序。