伴随着梦想前行
13/6
2018

centos6的python2.7安装fasttext

fasttext说明:
https://fasttext.cc/docs/en/support.html

要求:
(gcc-4.6.3 or newer) or (clang-3.3 or newer)
注:centos6默认的gcc是4.4;

python2.7:
pip install cython
pip install fasttext
douban源加速:pip install fasttext --trusted-host pypi.doubanio.com

报错:

  1. gcc版本问题的话自行升级;
  2. fasttext/fasttext.c编译错误,大致的问题是:
    cython会将fasttext.pyx转换成fasttext.c并编译;

实际上根据language="c++"看出需要的是fasttext.cpp,而且已经有这个文件;
因此关键点是如何让gcc编译fasttext.cpp;

从cython源码来看:
./python27/lib/python2.7/site-packages/Cython/Build/Dependencies.py
extension的sources包含了fasttext/fasttext.c,直接改成fasttext/fasttext.cpp即可;
def create_extension_list中:
patterns[0].sources[0] = 'fasttext/fasttext.cpp'


Installing collected packages: future, fasttext
  Running setup.py install for future ... done
  Running setup.py install for fasttext ... error
    Complete output from command /data/python27/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-gkLUbb/fasttext/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('rn', 'n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-gqusvF/install-record.txt --single-version-externally-managed --compile:
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-2.7
    creating build/lib.linux-x86_64-2.7/fasttext
    copying fasttext/model.py -> build/lib.linux-x86_64-2.7/fasttext
    copying fasttext/__init__.py -> build/lib.linux-x86_64-2.7/fasttext
    running build_ext
    building '*' extension
    creating build/temp.linux-x86_64-2.7
    creating build/temp.linux-x86_64-2.7/fasttext
    creating build/temp.linux-x86_64-2.7/fasttext/cpp
    creating build/temp.linux-x86_64-2.7/fasttext/cpp/src
    gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/data/python27/include/python2.7 -c fasttext/fasttext.c -o build/temp.linux-x86_64-2.7/fasttext/fasttext.o -O3 -pthread -funroll-loops -std=c++0x
    gcc: fasttext/fasttext.c: No such file or directory
    gcc: no input files
    error: command 'gcc' failed with exit status 1

备注:
下载fasttext包:
http://pypi.doubanio.com/packages/a4/86/ff826211bc9e28d4c371668b30b4b2c38a09127e5e73017b1c0cd52f9dfa/fasttext-0.8.3.tar.gz

添加新评论