记录部署时遇到的问题,供查询使用。方便自己也方便他人
环境: Django=2.1.5 python3.6 uwsgi2.0 Red Hat
uwsgi loading shared libraries:libicui18n.so.58 异常处理
uwsgi: error while loading shared libraries: libicui18n.so.58: cannot open shared object file: No such file or directory
解决方案:
1. 进入python 的 bin 目录下找到 uwsgi( 可使用 which uwsgi 查看具体目录)
2. ldd uwsgi 查看缺失包
linux-vdso.so.1 => (0x00007ffc14fc7000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ff6b0347000)
libm.so.6 => /lib64/libm.so.6 (0x00007ff6b0045000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007ff6afe40000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007ff6afbde000)
libxml2.so.2 => /lib64/libxml2.so.2 (0x00007ff6af874000)
libz.so.1 => /lib64/libz.so.1 (0x00007ff6af65d000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007ff6af437000)
libicui18n.so.58 => not found
libicuuc.so.58 => not found
libicudata.so.58 => not found
libutil.so.1 => /lib64/libutil.so.1 (0x00007ff6af233000)
librt.so.1 => /lib64/librt.so.1 (0x00007ff6af02a000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007ff6aedf3000)
libc.so.6 => /lib64/libc.so.6 (0x00007ff6aea30000)
/lib64/ld-linux-x86-64.so.2 (0x00005634c289c000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007ff6ae82c000)
3. 将 lib 下想要的包软连接到 /lib64 下(64 位系统).
# 我使用的是虚拟环境,所有这个 lib已经 lib64 目录都在原生 python 环境下
4. 此时运行会提示缺失CXXABI 文件
# 可使用以下命令查看 strings /usr/lib64/libstdc++.so.6|grep CXXABI
将 /lib 文件下的 libstdc++.so.6.0.24
拷贝到 /lib64中(cp libstdc++.so.6.0.24 /lib64/),
删除原有的软连接,新建软连接
ln -s libstdc++.so.6.0.24 libstdc++.so.6
####Cpython sys.version 报错问题
File "/usr/share/Anaconda3/lib/python3.6/platform.py", line 1257, in python_implementation
return _sys_version()[0]
File "/usr/share/Anaconda3/lib/python3.6/platform.py", line 1215, in _sys_version
repr(sys_version))
ValueError: failed to parse CPython sys.version: '3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 18:10:19) \n[GCC 7.2.0]'
解决方案
_sys_version_parser = re.compile(
r'(?:\|[^|]*\|)*\s*' #去掉'|Anaconda xxx|'等,避免出现failed to parse CPython sys.version
r'([\w.+]+)\s*' # "version<space>"
r'\(#?([^,]+)' # "(#buildno"
r'(?:,\s*([\w ]*)' # ", builddate"
r'(?:,\s*([\w :]*))?)?\)\s*' # ", buildtime)<space>"
r'\[([^\]]+)\]?', re.ASCII) # "[compiler]"