django PostgreSQL Error : Symbol not found: _lo_lseek64

Django 1.8
PostgreSQL 9.4
Mac OS X Yosemite (Version 10.10.5)

python manage.py runserver

でエラー。

    return import_module('%s.base' % backend_name)
  File "/Users/uuuuuuuu/.pyenv/versions/2.7.9/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/Users/uuuuuuuu/.pyenv/versions/mmr2/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 24, in <module>
    raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: dlopen(/Users/uuuuuuuu/.pyenv/versions/mmr2/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Symbol not found: _lo_lseek64
  Referenced from: /Users/uuuuuuuu/.pyenv/versions/mmr2/lib/python2.7/site-packages/psycopg2/_psycopg.so
  Expected in: /usr/lib/libpq.5.dylib
 in /Users/uuuuuuuu/.pyenv/versions/mmr2/lib/python2.7/site-packages/psycopg2/_psycopg.so

http://stackoverflow.com/questions/8237842/django-core-exceptions-improperlyconfigured-error-loading-psycopg-module-no-mo

Pythonインタープリターでも同じエラー。

>>> import psycopg2

psycopg2 を読み込んだ時に、Symbol not found: _lo_lseek64

http://stackoverflow.com/questions/28515972/problems-using-psycopg2-on-mac-os-yosemite

$ sudo mv /usr/lib/libpq.5.dylib /usr/lib/libpq.5.dylib.old  
$ sudo ln -s /Library/PostgreSQL/9.4/lib/libpq.5.dylib /usr/lib

で直った。

pyenvでPythonのバージョンが切り替わらない

pyenvのコマンドで2.7.9に設定して、pyenvのコマンドで設定確認したら2.7.9なのに、
python コマンドを実行するとバージョンが3.5.1

pyenv local 2.7.9
pyenv local
2.7.9

pyenv global 2.7.9
pyenv global      
2.7.9

pyenv shell 2.7.9
pyenv shell      
2.7.9
python
Python 3.5.1 (default, Jan 22 2016, 08:52:08) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

.pyenvディレクトリの中

2.7.9の実体が3.5.1になっている気がする。

~/.pyenv/versions/2.7.9/bin% ll

total 96
-rw-r--r--  1 kubotad  staff  2154 May 19 12:52 activate
-rw-r--r--  1 kubotad  staff  1270 May 19 12:52 activate.csh
-rw-r--r--  1 kubotad  staff  2406 May 19 12:52 activate.fish
-rwxr-xr-x  1 kubotad  staff   267 May 19 12:52 easy_install
-rwxr-xr-x  1 kubotad  staff   267 May 19 12:52 easy_install-3.5
-rwxr-xr-x  1 kubotad  staff   239 May 19 12:52 pip
-rwxr-xr-x  1 kubotad  staff   239 May 19 12:52 pip3
-rwxr-xr-x  1 kubotad  staff   239 May 19 12:52 pip3.5
lrwxr-xr-x  1 kubotad  staff     9 May 19 12:52 python -> python3.5
lrwxr-xr-x  1 kubotad  staff     9 May 19 12:52 python3 -> python3.5
lrwxr-xr-x  1 kubotad  staff    86 May 19 12:52 python3.5 -> /usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/bin/python3.5
-rwxr-xr-x  1 kubotad  staff   246 Jun 29 19:04 virtualenv
pyenv uninstall 2.7.9
pyenv: remove /Users/kubotad/.pyenv/versions/2.7.9? y

pyenv install 2.7.9 
Downloading Python-2.7.9.tgz...
-> https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
Installing Python-2.7.9...
patching file ./Lib/site.py
patching file ./Lib/ssl.py
Installed Python-2.7.9 to /Users/kubotad/.pyenv/versions/2.7.9

とりあえず、直った。

python
Python 2.7.9 (default, Jun 29 2016, 19:25:33) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
KeyboardInterrupt

Deep LearningをやりたかったらNVIDIA入のPCを買うしかない

メモ:
NVIDIAでないGPUでDeep Learningの処理を高速化する方法はないか調べてみたけど、
どうやら全く対応していないっぽい。

ChainerもTensorFlowもCaffeも
NVIDIAのCUDAで処理の高速化をしている。
AMDRadeonとか、IntelのIrisとかだとCUDAは使えない。 OpenCLNVIDIA以外のGPUで使える、CUDAと同等の、並列処理用ライブラリみたいだけど、
2016年6月時点で対応しているDeepLearningフレームワークはほとんどないみたい。
OpenCL - Wikipedia

NVIDIAの独占状態。
どうやら、CaffeはOpenCLに対応しているっぽいけど、
Caffeを使ったことがない。。(インストールが大変という噂)

https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

http://stackoverflow.com/questions/30622805/opencl-amd-deep-learning

https://github.com/tensorflow/tensorflow/issues/22
https://github.com/pfnet/chainer/issues/99
http://www.slideshare.net/pfi/more-modern-gpu/5

ChainerよりTensorFlowの方が先にOpenCLに対応しそうな雰囲気がする。

MacBookを買おうか検討中だけど、、どうしよう。

DeepLearning Caption (Mac)

Chainerで画像のキャプション生成 - Qiita
の記事を試す。

Ubuntuでやった時のメモ:
http://kubotti.hatenablog.com/entry/2016/06/07/142850

ソースコード取得。
https://github.com/dsanno/chainer-image-caption

git clone https://github.com/dsanno/chainer-image-caption.git

http://cs.stanford.edu/people/karpathy/deepimagesent/ から
Flickr8K (50MB), Flickr30K (200MB), をダウンロード。

hdf5

$ pip install h5py
Downloading/unpacking h5py
  Downloading h5py-2.6.0.tar.gz (245kB): 245kB downloaded
  Running setup.py (path:/Users/kubotad/.virtualenvs/ml/build/h5py/setup.py) egg_info for package h5py
    zip_safe flag not set; analyzing archive contents...
    
    Installed /Users/kubotad/.virtualenvs/ml/build/h5py/.eggs/pkgconfig-1.1.0-py2.7.egg
    Searching for Cython>=0.19

省略

.virtualenvs/ml/build/h5py/h5py/api_compat.h:27:10: fatal error: 'hdf5.h' file not found

#include "hdf5.h"

         ^

1 warning and 1 error generated.

error: command 'cc' failed with exit status 1

----------------------------------------
Cleaning up...
brew tap homebrew/science
brew install hdf5

pip install h5py

train

GeForceGPUが入っていないので、オプションを変える。
繰り返し5回(デフォルト100回)。

python src/train.py -s dataset.pkl -i vgg_feats.mat -o model/caption_gen --iter 5
word count:  2540
/Users/kubotad/.virtualenvs/ml/lib/python2.7/site-packages/chainer/functions/activation/lstm.py:15: RuntimeWarning: overflow encountered in exp
  return 1 / (1 + numpy.exp(-x))
epoch: 1 done
train loss: 0.0477752295387 accuracy: 0.240047393365
test loss: 0.0503208395787 accuracy: 0.314788910424
epoch: 2 done
train loss: 0.0407720221888 accuracy: 0.304062288422
test loss: 0.0463195297886 accuracy: 0.33422094885
epoch: 3 done
train loss: 0.0389543428261 accuracy: 0.319383322049
test loss: 0.0449947251971 accuracy: 0.345344231904
epoch: 4 done
train loss: 0.037905781938 accuracy: 0.330012976755
test loss: 0.0435648040157 accuracy: 0.356770877223
epoch: 5 done
train loss: 0.0370137848389 accuracy: 0.339999435793
test loss: 0.0429580021762 accuracy: 0.36130445774

caffe model

ダウンロード。
http://www.robots.ox.ac.uk/~vgg/software/very_deep/caffe/VGG_ILSVRC_19_layers.caffemodel

変換。

python src/convert_caffemodel_to_pkl.py VGG_ILSVRC_19_layers.caffemodel vgg19.pkl

generate caption

python src/generate_caption.py -s dataset.pkl -i vgg19.pkl -m model/caption_gen_0004.model -l image/list.txt
chainer-image-caption% python src/generate_caption.py -s dataset.pkl -i vgg19.pkl -m model/caption_gen_0004.model -l image/list.txt
#  image/asakusa.jpg
a man is sitting on a bench
a group of people sit on a bench
a group of people are sitting on a bench
a group of people are standing in the snow
a group of people are walking through the snow
#  image/tree.jpg
a man is sitting on a bench
a group of people sit on a bench
a group of people are sitting on a bench
a group of people sitting on a bench
a group of people sit on a sidewalk

pyenvのメモ

メモ
pyenv
Python 2系と3系を切り替えるツール
HomebrewのインストールからpyenvでPythonのAnaconda環境構築までメモ - Qiita

virtualenv 同じPythonバージョンで別のPython環境を切り替えるツール http://qiita.com/Kodaira_/items/feadfef9add468e3a85b

anyenvというのもある。

git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile

使ったコマンド

インストール可能なPythonバージョン一覧

pyenv install --list

現在のバージョン表示

pyenv version

インストール済みPythonバージョン一覧

pyenv versions

インストール可能なPython 3.5系バージョンに3.5-devしかなかったので、
pyenvをアップグレード。

brew upgrade pyenv

3.5.1が出てきた。

Python 3.5.1のインストール

pyenv install 3.5.1

Pythonバージョンの切り替え

pyenv local 3.5.1
pyenv global  3.5.1

pythonコマンドでバージョンが切り替わらなかった。

python
Python 2.7.11 (default, Jan 22 2016, 08:28:37) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
KeyboardInterrupt

シェルの設定に追記したら、pythonコマンドでPythonバージョンが切り替わった。

vi .zshrc

export PYENV_ROOT="${HOME}/.pyenv"
export PATH=${PYENV_ROOT}/bin:$PATH
eval "$(pyenv init -)"

.zshrcの設定でshellコマンドがないエラーも直った。

% pyenv shell 3.5.1
pyenv: no such command `shell'

virtualenvのactivate

インストールしたPython環境をもとにvirtualenvを作成。

pyenv virtualenv 2.7.9 env1

pyenv activateコマンドでvirtualenv環境を有効化。

pyenv activate env1

memo

.zshrcに

eval "$(pyenv virtualenv-init -)"

を足すと、terminalで改行した時の応答が遅くなる?

CentOS6

PyenvをCentOS6.3でセットアップする(超かんたんリファレンス付き) - Qiita

yum install gcc gcc-c++ make git openssl-devel bzip2-devel zlib-devel readline-devel sqlite-devel bzip2 sqlite openssl-devel
pyenv install 2.7.12


Installing Python-2.7.12...
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

コピペ元のyumコマンドは、bzip2-develの手前の空白が全角になってる?

MacOS Sierra

pyenvでPythonを切り替えようとしたらエラーになった。
シェルをzshにしていたことが原因だったっぽい。

% pyenv activate 2.7.13

Failed to activate virtualenv.

Perhaps pyenv-virtualenv has not been loaded into your shell properly.
Please restart current shell and try again.

.zshrc に↓を足したら動いた。

# pyenv
export PYENV_ROOT="${HOME}/.pyenv"
export PATH="${PYENV_ROOT}/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

zsh設定 メモ

System Preferences > Users & Groups
左下の鍵マークからロック解除
左一覧の名前を control + クリック > Advanced Options
Login shell: を /bin/zsh
で設定した。

設定ファイルを編集してもできるっぽい。

http://qiita.com/harapeko_wktk/items/47aee77e6e7f7800fa03

.python-version

特定のディレクトリにいるときに自動でpython環境が変わるようにするには、
.python-version
というファイルを作って、その中にvirtualenvの名前を書く。