2018年7月20日星期五

DeepPavlov 使用问题记录

python setup.py develop 安装,必须使用 python 3.6 版本,3.7 版本也不行。

安装好后,直接运行 python -m deeppavlov interact deeppavlov/configs/go_bot/gobot_dstc2.json -d 会有问题,有依赖的库还没有安装,比如 tensorflow, fasttext 等。所以必须先 python -m deeppavlov install gobot_dstc2 才行。

相关的库不要自己安装,因为版本不一样会出错。比如我自己安装了 fasttext 0.8.2 和 0.8.3 这两个版本都试过,代码里面 import fastText 都会报错,手动改成了 import fasttext 之后还是会报 Exception: fastText: Cannot load /Users/chenxiaoyu/code/nlp/DeepPavlov/download/embeddings/wiki.en.bin due to C++ extension failed to allocate the memory。刚开始我以为是因为内存不够,释放出了10多G的内存还是没解决,最后发现还是因为 fasttext 版本的原因导致的。

刚开始一定要设置一下 DP_CACHE_DIR 环境变量,用来保存下载的文件,否则每次运行都要重新下载,尤其是 wiki.en.bin 文件特别大。

2018年7月19日星期四

homebrew 安装不同版本的 python

安装
brew update
brew install pyenv

配置
在 .zshrc 或 .bash_profile 文件最后写入:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if which pyenv > /dev/null;
  then eval "$(pyenv init -)";
fi

查看可安装的版本
pyenv install --list

安装python版本
pyenv install 3.6.3

查看当前已安装的python版本
pyenv versions

设置python版本
# 对所有的Shell全局有效,会把版本号写入到~/.pyenv/version文件中
pyenv global 3.6.3
也可以写成 pyenv global system 3.6.3

# 只对当前目录有效,会在当前目录创建.python-version文件
pyenv local 3.6.3

# 只在当前会话有效,等同于设置PYENV_VERSION环境变量
pyenv shell 3.6.3

优先级:PYENV_VERSION > local > global

$ pyenv rehash  # 创建垫片路径(为所有已安装的可执行文件创建 shims,如:~/.pyenv/versions/*/bin/*,因此,每当你增删了 Python 版本或带有可执行文件的包(如 pip)以后,都应该执行一次本命令)

重置版本设置
只有 pyenv shell 和 pyenv local 命令有--unset参数
pyenv shell --unset
pyenv local --unset

虚拟环境
个人觉得virtualenv就够了, 用不到pyenv-virtualenv

pyenv-virtualenv 安装
brew update
brew install pyenv-virtualenv

pyenv-virtualenv 配置
在 .zshrc 或 .bash_profile 文件最后写入:
# pyenv-virtualenv
if which pyenv-virtualenv-init > /dev/null;
  then eval "$(pyenv virtualenv-init -)";
fi

创建虚拟环境
$ pyenv virtualenv 2.7.10 env-2.7.10
若不指定python 版本,会默认使用当前环境python版本。环境的真实目录位于 ~/.pyenv/versions 下

列出当前虚拟环境
pyenv virtualenvs
pyenv activate env-name  # 激活虚拟环境
pyenv deactivate #退出虚拟环境,回到系统环境

删除虚拟环境
pyenv uninstall my-virtual-env
rm -rf ~/.pyenv/versions/env-name  # 或者删除其真实目录

问题解决
mac安装有可能会出现 zipimport.ZipImportError: can't decompress data; zlib not available 的问题,解决方法:CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install 3.x.x

参考:http://einverne.github.io/post/2017/04/pyenv.html
https://github.com/eteplus/blog/issues/4