Docker容器中Ubuntu 14.04安装PyMC失败,Mac OS可正常运行
解决Docker中Ubuntu 14.04安装PyMC的UnicodeDecodeError问题
我之前也碰到过完全一样的问题,根源在于Ubuntu 14.04容器的系统默认编码是ASCII,而PyMC安装时读取pymc/flib.f这个Fortran文件里包含了非ASCII字节,用ASCII解码就会失败;Mac系统默认用UTF-8编码,所以不会触发这个错误。
下面是具体的解决步骤:
临时设置UTF-8编码(安装前执行)
在容器的终端里先运行这两条命令,强制当前会话使用UTF-8编码:export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8持久化编码设置(可选,避免每次启动容器都要重新设置)
编辑/etc/environment文件,添加以下两行:LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8保存后可以重启容器,或者执行
source /etc/environment让设置立即生效。确保安装UTF-8语言包
有些Ubuntu 14.04镜像可能没预装en_US.UTF-8语言支持,执行以下命令安装:apt-get update && apt-get install -y language-pack-en-base重新安装PyMC
完成以上设置后,再执行安装命令即可:pip install pymc如果是从源码安装,进入源码目录后执行:
python setup.py install
简单说下原理:Mac OS一直默认使用UTF-8作为系统编码,处理带非ASCII字符的文件毫无压力;但Ubuntu 14.04的默认LC系列环境变量是ASCII,当PyMC安装脚本读取包含非ASCII字节的Fortran文件时,用ASCII解码就会抛出UnicodeDecodeError。
内容的提问来源于stack exchange,提问作者Dan Lanier




