centos gensim安装失败,出现legacy-install-failure

0mkxixxg  于 2022-11-07  发布在  其他
关注(0)|答案(1)|浏览(921)

我在试着安装gensim。
为此我运行了命令
pip install git+https://github.com/witiko/gensim.git@feature/bm25 .
但它不会安装,并且会失败,并显示以下错误消息:

building 'gensim.models.nmf_pgd' extension
      gcc -pthread -B /XXXX/envs/codex-env/compiler_compat -Wno-unused-result -Wsign-compare -DNDEBUG -O2 -Wall -fPIC -O2 -isystem /XXXX/envs/codex-env/include -I/XXXX/envs/codex-env/include -fPIC -O2 -isystem /XXXX/envs/codex-env/include -fPIC -I/XXXX/codex-env/include/python3.9 -I/XXXX/envs/codex-env/lib/python3.9/site-packages/numpy/core/include -c gensim/models/nmf_pgd.c -o build/temp.linux-x86_64-cpython-39/gensim/models/nmf_pgd.o
      gcc -pthread -B /XXXX/envs/codex-env/compiler_compat -shared -Wl,-rpath,/XXXX/envs/codex-env/lib -Wl,-rpath-link,/XXXX/envs/codex-env/lib -L/XXXX/envs/codex-env/lib -L/XXXX/envs/codex-env/lib -Wl,-rpath,/XXXX/envs/codex-env/lib -Wl,-rpath-link,/XXXX/envs/codex-env/lib -L/XXXX/envs/codex-env/lib build/temp.linux-x86_64-cpython-39/gensim/models/nmf_pgd.o -o build/lib.linux-x86_64-cpython-39/gensim/models/nmf_pgd.cpython-39-x86_64-linux-gnu.so
      building 'gensim.similarities.fastss' extension
      creating build/temp.linux-x86_64-cpython-39/gensim/similarities
      gcc -pthread -B /XXXX/envs/codex-env/compiler_compat -Wno-unused-result -Wsign-compare -DNDEBUG -O2 -Wall -fPIC -O2 -isystem /XXXX/envs/codex-env/include -I/XXXX/envs/codex-env/include -fPIC -O2 -isystem /XXXX/envs/codex-env/include -fPIC -I/XXXX/envs/codex-env/include/python3.9 -I/XXXX/envs/codex-env/lib/python3.9/site-packages/numpy/core/include -c gensim/similarities/fastss.c -o build/temp.linux-x86_64-cpython-39/gensim/similarities/fastss.o
      gensim/similarities/fastss.c: In function ‘ceditdist’:
      gensim/similarities/fastss.c:725:9: error: ‘for’ loop initial declarations are only allowed in C99 mode
               for (WIDTH tmpi = 0; tmpi <= len_s1; tmpi++) row2[tmpi] = tmpi;
               ^
      gensim/similarities/fastss.c:725:9: note: use option -std=c99 or -std=gnu99 to compile your code
      gensim/similarities/fastss.c:727:9: error: ‘for’ loop initial declarations are only allowed in C99 mode
               for (WIDTH i2 = 0; i2 < len_s2; i2++) {
               ^
      gensim/similarities/fastss.c:738:13: error: ‘for’ loop initial declarations are only allowed in C99 mode
                   for (WIDTH i1 = 0; i1 < len_s1; i1++) {
                   ^
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> gensim
pxq42qpu

pxq42qpu1#

看起来您的本地C编译器正在反对Gensim的(Cython生成的).c代码中的一些语法。
您的错误输出通过编译器的一个额外选项提供了一个可能的解决方案:

gensim/similarities/fastss.c:725:9: note: use option -std=c99 or -std=gnu99 to compile your code

您 * 可能 * 能够通过环境变量CFLAGS添加此标志,例如通过在安装命令之前设置它:

% CFLAGS="-std=c99" pip install git+https://github.com/witiko/gensim.git@feature/bm25

您 * 可能 * 也会得到与Gensim的一些C++文件相关的类似错误;如果错误输出包含类似的选项建议,您可能需要通过CPPFLAGS环境变量提供它。
如果这样做不起作用,你还可以在Gensim的setup.py文件中编辑额外的gcc选项。在这种情况下,首先获取git仓库,然后在make_c_ext()make_cpp_ext()函数中的相关extra_args行附近本地编辑setup.py文件,然后执行pip install命令,指定更改后的目录作为源。

相关问题