linux安裝thefuck報gcc錯誤

chantAria發表於2020-12-18

報錯程式碼

今天心血來潮打算在自己的centos伺服器安裝大名鼎鼎的thefuck
根據官網的指示,安裝方法非常簡單,只需要
pip install thefuck
安裝完成後再進行簡單地配置就可以大功告成了

但是在linux上安裝時,卻報瞭如下錯誤

    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_SIZEOF_PID_T=4 -DPSUTIL_VERSION=573 -DPSUTIL_LINUX=1 -I/usr/include/python3.6m -c psutil/_psutil_common.c -o build/temp.linux-x86_64-3.6/psutil/_psutil_common.o
    psutil/_psutil_common.c:9:20: fatal error: Python.h: No such file or directory
     #include <Python.h>
                        ^
    compilation terminated.
    error: command 'gcc' failed with exit status 1
    
    ----------------------------------------
Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-dwgphu9_/psutil/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-a1_xzgs6-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-dwgphu9_/psutil/

報錯分析

該段報錯光復制最下面一行是搜不到結果的,其關鍵在於上面的

gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_SIZEOF_PID_T=4 -DPSUTIL_VERSION=573 -DPSUTIL_LINUX=1 -I/usr/include/python3.6m -c psutil/_psutil_common.c -o build/temp.linux-x86_64-3.6/psutil/_psutil_common.o
    psutil/_psutil_common.c:9:20: fatal error: Python.h: No such file or directory
     #include <Python.h>
                        ^
    compilation terminated.
    error: command 'gcc' failed with exit status 1

仔細觀察可以看出,該段程式碼的大意是執行了一個超級長的gcc,在執行過程中讀取到psutil/_psutil_common.c檔案時,有一個Python.h檔案沒有找到,導致了gcc報錯

所以問題的解決方案在於Python.h檔案


解決方案

安裝python-dev或者python3-dev

Debian或者Ubuntu

sudo apt-get install python-dev 
sudo apt-get install python3-dev

CentOS / Fedora / RedHat

sudo yum install python-devel  
sudo yum install python3-devel 

後面再進行正常地配置就可以使用了
在shell輸入

vim ~/.bashrc

在最後一行鍵入

eval "$(thefuck --alias fuck)"

最後的fuck可以改成任何你想要的關鍵詞 :wq推出後執行如下命令即可使之執行

source ~/.bashrc

相關文章