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,所以要重装)