1.安装环境:
Mac OS 10.14.4
Python 3.6.8 :: Anaconda, Inc.
gcc-8 (Homebrew GCC 8.3.0) 8.3.0
Copyright © 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2.安装命令:
pip intall pyhanlp
提示:error: command ‘gcc’ failed with exit status 1
3.错误日志
Collecting pyhanlp
Collecting jpype1 (from pyhanlp)
Using cached https://files.pythonhosted.org/packages/c4/4b/60a3e63d51714d4d7ef1b1efdf84315d118a0a80a5b085bb52a7e2428cdc/JPype1-0.6.3.tar.gz
Building wheels for collected packages: jpype1
Building wheel for jpype1 (setup.py): started
Building wheel for jpype1 (setup.py): finished with status 'error'
Complete output from command /anaconda3/envs/python36/bin/python -u -c "import setuptools, tokenize;__file__='/private/var/folders/j3/q1l_gzdx53b9_63q9f9hlgsc0000gn/T/pip-install-6hw5f3qz/jpype1/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /private/var/folders/j3/q1l_gzdx53b9_63q9f9hlgsc0000gn/T/pip-wheel-6l2h2ohv --python-tag cp36:
running bdist_wheel
running build
running build_py
creating build
creating build/lib.macosx-10.7-x86_64-3.6
creating build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jcollection.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_classpath.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jio.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_pykeywords.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jproxy.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_gui.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_darwin.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/nio.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_cygwin.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_properties.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_refdaemon.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jboxed.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/JClassUtil.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jvmfinder.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/imports.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_core.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_linux.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jarray.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jobject.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jclass.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_windows.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jwrapper.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jexception.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/reflect.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jpackage.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
creating build/lib.macosx-10.7-x86_64-3.6/jpype/awt
copying jpype/awt/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/jpype/awt
creating build/lib.macosx-10.7-x86_64-3.6/jpype/awt/event
copying jpype/awt/event/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/jpype/awt/event
copying jpype/awt/event/WindowAdapter.py -> build/lib.macosx-10.7-x86_64-3.6/jpype/awt/event
creating build/lib.macosx-10.7-x86_64-3.6/jpypex
copying jpypex/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/jpypex
creating build/lib.macosx-10.7-x86_64-3.6/jpypex/swing
copying jpypex/swing/AbstractAction.py -> build/lib.macosx-10.7-x86_64-3.6/jpypex/swing
copying jpypex/swing/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/jpypex/swing
copying jpypex/swing/pyutils.py -> build/lib.macosx-10.7-x86_64-3.6/jpypex/swing
running build_ext
building '_jpype' extension
creating build/temp.macosx-10.7-x86_64-3.6
creating build/temp.macosx-10.7-x86_64-3.6/native
creating build/temp.macosx-10.7-x86_64-3.6/native/python
creating build/temp.macosx-10.7-x86_64-3.6/native/common
gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/anaconda3/envs/python36/include -arch x86_64 -I/anaconda3/envs/python36/include -arch x86_64 -DMACOSX=1 -Inative/common/include -Inative/python/include -Inative/jni_include -I/anaconda3/envs/python36/include/python3.6m -c native/python/jpype_python.cpp -o build/temp.macosx-10.7-x86_64-3.6/native/python/jpype_python.o -ggdb
In file included from /anaconda3/envs/python36/lib/gcc/x86_64-apple-darwin11.4.2/4.8.5/include-fixed/syslimits.h:7:0,
from /anaconda3/envs/python36/lib/gcc/x86_64-apple-darwin11.4.2/4.8.5/include-fixed/limits.h:34,
from /anaconda3/envs/python36/include/python3.6m/Python.h:11,
from native/python/include/jpype_python.h:23,
from native/python/jpype_python.cpp:19:
/anaconda3/envs/python36/lib/gcc/x86_64-apple-darwin11.4.2/4.8.5/include-fixed/limits.h:168:61: fatal error: limits.h: No such file or directory
#include_next <limits.h> /* recurse down to the real one */
^
compilation terminated.
error: command 'gcc' failed with exit status 1
----------------------------------------
Running setup.py clean for jpype1
Failed to build jpype1
Installing collected packages: jpype1, pyhanlp
Running setup.py install for jpype1: started
Running setup.py install for jpype1: finished with status 'error'
Complete output from command /anaconda3/envs/python36/bin/python -u -c "import setuptools, tokenize;__file__='/private/var/folders/j3/q1l_gzdx53b9_63q9f9hlgsc0000gn/T/pip-install-6hw5f3qz/jpype1/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /private/var/folders/j3/q1l_gzdx53b9_63q9f9hlgsc0000gn/T/pip-record-dn0tq3ls/install-record.txt --single-version-externally-managed --compile:
running install
running build
running build_py
creating build
creating build/lib.macosx-10.7-x86_64-3.6
creating build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jcollection.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_classpath.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jio.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_pykeywords.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jproxy.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_gui.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_darwin.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/nio.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_cygwin.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_properties.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_refdaemon.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jboxed.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/JClassUtil.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jvmfinder.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/imports.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_core.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_linux.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jarray.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jobject.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jclass.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_windows.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jwrapper.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jexception.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/reflect.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
copying jpype/_jpackage.py -> build/lib.macosx-10.7-x86_64-3.6/jpype
creating build/lib.macosx-10.7-x86_64-3.6/jpype/awt
copying jpype/awt/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/jpype/awt
creating build/lib.macosx-10.7-x86_64-3.6/jpype/awt/event
copying jpype/awt/event/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/jpype/awt/event
copying jpype/awt/event/WindowAdapter.py -> build/lib.macosx-10.7-x86_64-3.6/jpype/awt/event
creating build/lib.macosx-10.7-x86_64-3.6/jpypex
copying jpypex/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/jpypex
creating build/lib.macosx-10.7-x86_64-3.6/jpypex/swing
copying jpypex/swing/AbstractAction.py -> build/lib.macosx-10.7-x86_64-3.6/jpypex/swing
copying jpypex/swing/__init__.py -> build/lib.macosx-10.7-x86_64-3.6/jpypex/swing
copying jpypex/swing/pyutils.py -> build/lib.macosx-10.7-x86_64-3.6/jpypex/swing
running build_ext
building '_jpype' extension
creating build/temp.macosx-10.7-x86_64-3.6
creating build/temp.macosx-10.7-x86_64-3.6/native
creating build/temp.macosx-10.7-x86_64-3.6/native/python
creating build/temp.macosx-10.7-x86_64-3.6/native/common
gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/anaconda3/envs/python36/include -arch x86_64 -I/anaconda3/envs/python36/include -arch x86_64 -DMACOSX=1 -Inative/common/include -Inative/python/include -Inative/jni_include -I/anaconda3/envs/python36/include/python3.6m -c native/python/jpype_python.cpp -o build/temp.macosx-10.7-x86_64-3.6/native/python/jpype_python.o -ggdb
In file included from /anaconda3/envs/python36/lib/gcc/x86_64-apple-darwin11.4.2/4.8.5/include-fixed/syslimits.h:7:0,
from /anaconda3/envs/python36/lib/gcc/x86_64-apple-darwin11.4.2/4.8.5/include-fixed/limits.h:34,
from /anaconda3/envs/python36/include/python3.6m/Python.h:11,
from native/python/include/jpype_python.h:23,
from native/python/jpype_python.cpp:19:
/anaconda3/envs/python36/lib/gcc/x86_64-apple-darwin11.4.2/4.8.5/include-fixed/limits.h:168:61: fatal error: limits.h: No such file or directory
#include_next <limits.h> /* recurse down to the real one */
^
compilation terminated.
error: command 'gcc' failed with exit status 1
-----------------------------------
4.原因
根据日志,conda里面安装了非常旧版本的gcc(/anaconda3/envs/python36/lib/gcc/x86_64-apple-darwin11.4.2/4.8.5),导致依赖项jpype编译失败。解决办法是在conda里卸载gcc,直接用mac系统的gcc。see stan-dev/pystan#550 (comment)
5.解决问题
# 单独安装一下jpype1
conda install -c conda-forge jpype1
# 再安装pyhanlp
pip install pyhanlp