Import numpy時,會報下面的錯誤
/home/spyros/.local/lib/python2.7/site-packages/numpy/core/multiarray.so: undefined symbol: PyUnicodeUCS2_FromObject
忘了截圖,大概就是PyUnicodeUCS2引發的錯誤,提示我某些c擴展編譯有問題。可是天地良心啊,我都是直接pip裝的T_T
解決路徑:
- 用pip uninstall numpy,在/usr/local/lib/python2.7/site-packages刪掉numpy*文件夾,然后繼續pip install。
- 下載miniconda,刪掉原來的,然后用conda install numpy
- 從zip手動裝,主目錄下python setup.py install
- Pip升級之后再重裝
- 重啟虛擬機/電腦
直到我發現了這個解釋:
You can check the size of the Unicode character a Python interpreter is using by checking the value of sys.maxunicode:
>>> import sys >>> if sys.maxunicode > 65535: ... print 'UCS4 build' ... else: ... print 'UCS2 build'
沒錯,我的是UCS4 build,但是貌似那些c擴展編譯的時候默認的是UCS2?
所以需要重新編譯我的python27。
進入python27的安裝目錄(天啦嚕我都不知道我是第幾次安裝了):
/home/pangxiaoyi/app/Python-2.7.13
注:這里可以用sys.path來打印
這里先給Python-2.7*加上777 -R權限,后面都sudo。
./configure --enable-unicode=ucs4 --with-ssl
make
sudo make install
然后再重新sudo pip install numpy以及pandas
(numpy會影響pandas,所以要重裝)