我昨天问了question这个问题,有些好人帮了我,但我想我只是傻了。我在Mac上运行Yosemite。我已经用Homebrew安装了python2和python3,并且我从Homebrew获得了pip和pip3。
现在我用pip3
安装nltk`安装了nltk,它在python 3上工作正常,但当然不是在python 2上。
所以我尝试了pip install nltk
,我得到了
pip install nltk
Requirement already satisfied (use --upgrade to upgrade): nltk in /usr/local/lib/python3.4/site-packages
Requirement already satisfied (use --upgrade to upgrade): six>=1.9.0 in /usr/local/lib/python3.4/site-packages (from nltk)
然后我试了
pip install --upgrade nltk
Requirement already up-to-date: nltk in /usr/local/lib/python3.4/site-packages
Requirement already up-to-date: six>=1.9.0 in /usr/local/lib/python3.4/site-packages (from nltk)
当然,我仍然无法在python 2中导入nltk。
过去我对pip和pip3没有任何麻烦,我也没有故意改变我的环境。如何让import nltk
在python 2中工作?
根据建议,我尝试获取pip的版本:
pip -V
pip 7.1.2 from /usr/local/lib/python2.7/site-packages (python 2.7)
所以它看起来像python 2,正如我想的那样。
我也按照建议尝试了pip2,但我得到了一个例外:
pip2 install nltk
Collecting nltk
Using cached nltk-3.0.5.tar.gz
Collecting six>=1.9.0 (from nltk)
Using cached six-1.9.0-py2.py3-none-any.whl
Building wheels for collected packages: nltk
Building wheel for nltk failed: [Errno 13] Permission denied: '/Users/saul/Library/Caches/pip/wheels/f6'
Failed to build nltk
Installing collected packages: six, nltk
Found existing installation: six 1.8.0
Uninstalling six-1.8.0:
Exception:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/pip/basecommand.py", line 211, in main
status = self.run(options, args)
File "/usr/local/lib/python2.7/site-packages/pip/commands/install.py", line 311, in run
root=options.root_path,
File "/usr/local/lib/python2.7/site-packages/pip/req/req_set.py", line 640, in install
requirement.uninstall(auto_confirm=True)
File "/usr/local/lib/python2.7/site-packages/pip/req/req_install.py", line 716, in uninstall
paths_to_remove.remove(auto_confirm)
File "/usr/local/lib/python2.7/site-packages/pip/req/req_uninstall.py", line 125, in remove
renames(path, new_path)
File "/usr/local/lib/python2.7/site-packages/pip/utils/__init__.py", line 315, in renames
shutil.move(old, new)
File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 303, in move
os.unlink(src)
OSError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/six-1.8.0.dist-info/DESCRIPTION.rst'
最后一行真的很奇怪,因为它表明安装不是在我用Homebrew安装的python 2中,而是在Mac附带的python 2中。
你能告诉我什么是错的以及如何纠正它吗?
答案 0 :(得分:3)
听起来你的系统的默认Python是Python3;这就是pip
指向Python 3站点包位置的原因。
要在Python 2上安装nltk
,请尝试pip2 install nltk
;然后键入python2
以启动Python 2。
答案 1 :(得分:1)
另一种解决方案是使用miniconda安装程序并设置单独的环境。
从here下载miniconda。快速安装说明为here。摘要如下:
OS X Miniconda安装在您的浏览器中下载Miniconda OS X的安装程序,然后在终端窗口中键入以下内容 并按照安装程序屏幕上的提示进行操作。如果不确定的话 设置,只需接受默认值,因为它们都可以在以后更改。
bash Miniconda3-latest-MacOSX-x86_64.sh
现在关闭并重新打开终端窗口以进行更改 效果。
要测试您的安装,请输入命令
conda list
。如果 如果安装正确,您将看到一个包列表 安装。然后要更新所有包,请键入
conda update conda
。
从终端设置环境并包含nltk和ipython包(以及所有依赖项):
$ conda create -n python2_env python=2 nltk ipython pyqt qtconsole
$ conda create -n python3_env python=3 nltk ipython pyqt qtconsole
激活您的环境:
source activate python2_env
然后从活动环境中的终端键入以下内容以启动iPython控制台窗口:
$ ipython qtconsole --pylab=inline
答案 2 :(得分:1)
我强烈建议使用virtualenv
而不是将pip安装到系统中。
使用virtualenv
,您可以隔离每个项目的环境,并指定您正在运行的Python。