MacOS Catalina下Python2/Python3的nltk无法使用求助
咱们一步步来解决你遇到的两个NLTK使用问题:
一、Python2中import nltk的语法错误问题
问题原因
你给Python2安装的NLTK版本太新了——NLTK从3.6版本开始就彻底停止支持Python2了,新版本的代码里用了Python3专属的语法(比如你报错里带end参数的print()函数,Python2里的print是语句,不是带参数的函数),所以Python2解析不了这些代码。
解决方案
卸载当前Python2的NLTK,安装最后一个支持Python2的版本(NLTK 3.5):
# 卸载现有NLTK sudo /usr/local/bin/pip uninstall nltk # 安装兼容Python2的旧版本 sudo /usr/local/bin/pip install nltk==3.5
安装完成后再运行Python2,执行import nltk应该就没问题了。
二、Python3中ModuleNotFoundError问题
问题原因
你用pip3把NLTK装到了用户目录的/Users/xyz/Library/Python/3.8/lib/python/site-packages,但你的/usr/local/bin/python3可能没把这个路径加入默认的模块搜索路径里,导致找不到NLTK。另外也可以先确认下pip3和你运行的python3是不是对应同一个版本。
解决方案
方案1:重新安装到系统默认路径
把NLTK装到Python3的系统级site-packages目录(这个路径是Python3默认会搜索的):
# 卸载现有用户目录下的NLTK sudo /usr/local/bin/pip3 uninstall nltk # 安装到系统目录 sudo /usr/local/bin/pip3 install nltk
安装完成后再运行/usr/local/bin/python3,执行import nltk应该就能成功了。
方案2:手动添加模块路径
如果你想保留用户目录下的安装,可以在Python3里临时添加路径测试:
import sys # 添加你的NLTK所在路径 sys.path.append('/Users/xyz/Library/Python/3.8/lib/python/site-packages') import nltk
如果这样能成功,你可以把这个路径加到PYTHONPATH环境变量里,让Python3每次启动都自动加载这个路径:
在终端执行:
echo 'export PYTHONPATH="/Users/xyz/Library/Python/3.8/lib/python/site-packages:$PYTHONPATH"' >> ~/.zshrc # 如果用的是bash,就改成~/.bash_profile source ~/.zshrc
额外建议
Python2已经在2020年停止官方支持了,后续不会再更新安全补丁和功能,建议你优先使用Python3来进行开发,这样能避免很多兼容性问题,也能用到NLTK的最新功能。
内容的提问来源于stack exchange,提问作者toby

