1. 程式人生 > >pyspider安裝失敗報FileNotFoundError: [Errno 2] No such file or directory: 'curl-config'

pyspider安裝失敗報FileNotFoundError: [Errno 2] No such file or directory: 'curl-config'

作業系統:CentOS6.9 64位
Python版本:3.6.2
安裝pyspider的時候報錯:

[[email protected] software]# pip3 install pyspider
Collecting pyspider
  Using cached pyspider-0.3.9.tar.gz
...
Collecting pycurl (from pyspider)
  Using cached pycurl-7.43.0.1.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "/tmp/pip-build-7572xl8l/pycurl/setup.py"
, line 104, in configure_unix stdout=subprocess.PIPE, stderr=subprocess.PIPE) File "/usr/local/python3/lib/python3.6/subprocess.py", line 707, in __init__ restore_signals, start_new_session) File "/usr/local/python3/lib/python3.6/subprocess.py", line 1333, in _execute_child raise child_exception_type(errno_num, err_msg) FileNotFoundError: [Errno 2
] No such file or directory: 'curl-config' ... __main__.ConfigurationError: Could not run curl-config: [Errno 2] No such file or directory: 'curl-config' ---------------------------------------- Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-7572xl8l/pycurl/

後面試著單獨安裝pycurl的時候發現報我錯誤和這個是一樣的。
看日誌可以發現是安裝pyspider的時候依賴於pycurl,於是程式就先安裝pycurl了,版本是7.43.0.1,在安裝pycurl的時候發現找不到”curl-config”這個檔案,網上查下發現是因為CentOS自帶的curl版本過低


ok升級一下curl版本,這裡選取與pycurl相同的版本,後來發現版本就算不同也是可以的
升級安裝curl

第一步:下載curl

wget https://curl.haxx.se/download/curl-7.43.0.tar.gz

第二步: 解壓

tar -zxf curl-7.43.0.tar.gz

第三步:編譯

cd curl-7.43.0
./configure

第四步:安裝

make && make install

第五步:新增環境變數

vim /etc/profile 
# 新增下面的環境變數
PATH=$PATH:/usr/local/curl/bin/

第六步:使環境變數生效

source /etc/profile

第七步:測試curl是否配置成功

curl -V

curl升級安裝成功截圖

此時再安裝pyspider就成功了
當然你也可以先安裝pycurl庫再安裝pyspider

pip3 install pyspider

pyspider安裝成功截圖

這個時候還有一個小問題,你在使用Python進行import的時候可能是報下面的錯誤

[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pycurl
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: pycurl: libcurl link-time version (7.19.7) is older than compile-time version (7.43.0)
>>>

雖然curl已經升級了,但是libcurl庫裡還沒有升級,把原來的刪除,再做一下軟連結就行
libcurl庫的字首是libcurl.so

刪除原來的libcurl庫軟連結

rm -f /usr/lib64/libcurl.so.4*

新安裝的libcurl在/usr/local/lib/目錄下

檢視新安裝的lib

 ll /usr/local/lib/ | grep curl

libcurl.so庫

在lib64目錄下建立軟連結指定libcurl.so庫

ln -s /usr/local/lib/libcurl.so.4.3.0 /usr/lib64/libcurl.so.4.3.0
ln -s /usr/local/lib/libcurl.so.4.3.0 /usr/lib64/libcurl.so.4

再次匯入pycurl模組就正常了
python匯入pycurl模組正常截圖

至此問題解決。