NLP-Python3 相关 Error 总结,(因为标题有字数限制,但为了检索方便就有了如上标题。)
背景:最近在学习基于Python3.6(Anaconda)的NLP,在词干提取过程中需要用到的Python包有 pyicu, pycld2, polyglot, pyenchant, pyaspeller 等,我尝试了三种操作系统:Windows10, Mac OS Mojave, CentOS7。在三种OS中使用这个这些包时都遇到了不同的Error,经过先苦后甜地研究后总结如下:
以OS分类:(Ubuntu没尝试,但已赠Solution。)
- CentOS7,
Symptom: pip install pyicu 出现gcc error:
gcc: error trying to exec ‘cc1plus’: execvp: No such file or directory
error: command ‘gcc’ failed with exit status 1
Solution: yum install gcc-c++
等待完成后再安装pyicu即可。
2. Mac OS Mojave,
Symptom: pip install pyicu 出现 …[Errno2]No such file or directory.
Solution: Try install pyicu using brew:
brew install icu4c
if it says that it’s already installed and just need to be linked, then try this:
brew link icu4c
# 附赠 Ubuntu 14.04 and 16.04,
Symptom: pip install pyicu 出现 …[Errno2]No such file or directory.
Solution: $sudo apt install libicu-dev
$pip install pyicu
3. Windows 10/Server2016, (最耗时的Troubleshooting…)
1Symptom: pip install pyicu 出现 error:
RuntimeError:
Please set the ICU_VERSION environment variable to the version of
ICU you have installed.
pip install pycld2 出现 error:
error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools”: http://landinghub.visualstudio.com/visual-cpp-build-tools
1Solution: 去 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载Unofficial Windows Binaries for Python Extension Packages.
注意选择对应自己Python和OS版本的包名。如 pyICU‑2.1‑cp36‑cp36m‑winamd64.whl 文件名中cp36表示Python3.6, win_amd64表示Windows-64bit。
下载完成后在cmd中执行 pip install <.whl的绝对路径>,
如 pip install C:\PythonDownloadPackages\pyICU‑2.1‑cp36‑cp36m‑winamd64.whl
对pycld2‑0.31‑cp36‑cp36m‑win_amd64.whl同理。
2Symptom: 执行
from polyglot.downloader import downloader
print(downloader.supported_languages_table(task=’ner2′)) 出现error:
language = subdir.split(path.sep)[1]
IndexError: list index out of range
# 这是仅存在于Windows系统下polyglot的bug。。。
2Solution: 找到polyglot包所在文件夹中的downloader.py,例如我的是
C:\ProgramData\Anaconda3\Lib\site-packages\polyglot\downloader.py
打开后把 def fromcsobj(csobj) 函数中的 path.sep 都改为 ‘/’ ,共有4个修改完成并保存即可。如果用的是Jupyter就重新用cmd打开jupyter notebook。
参考资料:https://rel.site/questions/16_94.php,其中有github上修改好的downloader.py文件,只要下载下来替换原包中的downloader.py文件即可。
3Symptom: pip install pyenchant 出现 ImportError: The ‘enchant’ C library was not found. Please install it via your OS package manager, or use a pre-built binary wheel from PyPI.
3Solution: Bug in Windows-64bit. A workaround is using pyaspeller.
重要结论:如果遇到 pip install 安装问题,可以先尝试去其他网站下载 .whl 或 .tar.gz 包再安装,可能是pip源问题。
注:如果下载的是 .tar.gz文件,在Windows中解压后可以找到setup.py文件,在cmd中cd到setup.py所在文件夹(也可以在此文件夹下的FileExplorer地址栏输入%comspec%),再执行python setup.py install即可。
以上内容希望对 Python+NLP 学习者有所帮助,少走弯路。如有误导,欢迎各位大神留言更正,非常感谢!