くりーむわーかー

プログラムとか。作ってて ・試しててハマった事など。誰かのお役に立てば幸いかと。 その他、いろいろエトセトラ。。。

install

Python matplotlibのインストールでグダる

Pythonでグラフ表示したくなったので、matplotlibをインストールしようとしたら

かなりグダったので残しておく。

matplotlibの公式

OSはCentOS7

pip install matplotlib

↑で基本は良いようですが、これだけだとCentOSでは動かない。

GUI系の処理をするのにtcl/tkを使ってるらしく、

それのPython用モジュールが標準だとPython3側にはないっぽ。

なのでPython3用のやつをインストールする。

sudo yum install tcl -y
sudo yum install tcl-devel -y
sudo yum install tk -y
sudo yum install tk-devel -y
sudo yum install tkinter -y
sudo yum install python-matplotlib-tk -y

なんだけど、これでもtkinterが入らない。

探してみると

> yum search tkinter

python3-tkinter.i686 : A GUI toolkit for Python
python3-tkinter.x86_64 : A GUI toolkit for Python
python34-tkinter.x86_64 : A GUI toolkit for Python 3
python35u-tkinter.x86_64 : A GUI toolkit for Python 3
python36-tkinter.x86_64 : A GUI toolkit for Python
python36u-tkinter.x86_64 : A GUI toolkit for Python

なので、

sudo yum install python36u-tkinter -y

でやってみると、下の感じでモジュールが競合してんぞって怒られる。

・・・
file /usr/lib64/python3.6/xml/sax/__pycache__/xmlreader.cpython-36.opt-2.pyc from install of python36-libs-3.6.6-5.el7.x86_64 conflicts with file from package python36u-libs-3.6.7-1.ius.centos7.x86_64
・・・

で、これを解消するには一回Python3をアンインストールする必要があるっぽい。

コワ。

なので

sudo yum remove python36u

sudo yum install python36u
sudo yum install python36u-devel

↑でアンインスト+インストしなおし。

そしたら、↓でOK。

sudo yum install python36u-tkinter -y

長かった。

あと、途中でAggはもう使えないよってエラーが出るので、

matplotlib.use('TkAgg')

を入れてみたり、↓の設定ファイルを書き換えたりする必要がある

vi ~/pyenv/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc

## 'module://my_backend'.
backend      : Tkagg

って事をみたのですが、インストールが上手くいった後だと、

特にやらなくてもちゃんと動いた。なんでしょね。

MongoDBをコマンドラインでインストールとサービス化もろもろ

  • インストール

最近、MongoDBを使ってみてる。製品と一緒にインストールさせるのに、 インストーラーみたいなのでやらずに、コマンドラインでのやり方。 本家のDocに書いてあるけど、いちを↓のコマンド

msiexec.exe /qb /i mongodb-win32-x86_64-3.2.4-signed.msi INSTALLLOCATION="I:\MongoDB" ADDLOCAL="all"

本家だとオプションが/qだけど、これだとマジで何も出なくて不安になるので、 進捗ステータスだけ表示したいから/qb。

ちなみに、すでにインストールされている場合は一度、インストーラ上げて、Removeやっておかないと 内部のパスの指定がめちゃくちゃになるっぽい。はまった。

インストールログを出したい場合は、上記のコマンドの一番最後に「/log installlog.log」みたいにつけてあげる。

  • サービス化

コマンドプロンプで「mongod」とか打ってるのは嫌なのでサービスにする。 まず、コンフィグファイルを作る。↓の感じ。

systemLog:
   destination: file
   path: I:\MongoDB\log\mongodb.log
   logAppend: true
storage:
   engine: wiredTiger
   dbPath: I:\MongoDB\data
net:
   bindIp: 127.0.0.1
   port: 27017
setParameter:
   enableLocalhostAuthBypass: false

logのフォルダとdataのフォルダは自分で作っておく。 ついでに、32bitOSの場合はエンジンに「wiredTiger」が使え無いっぽい。デフォルトのままやろうとすると、mongodを実行した時点でエラーになってサーバが上がらない。この場合は↑のコンフィグのエンジンの指定を「mmapv1」に変える。

使えるなら「wiredTiger」の方がいいらしいです。DBサイズがかなり軽くなるとか。。。

で、上記のファイルを「mongodb.conf」あたりのファイル名でインストールしたフォルダあたりに保存しておく。 いちをファイルはUTF8で作った。

設定ファイルつり終わったら↓のコマンドでサービス化する。

mongod.exe --config "I:\MongoDB\mongodb.conf" --install --serviceName MongoDB

作った直後は開始されてないので、サービス開いて、MongoDBのサービスを開始する。

この設定だとローカルからのアクセスしかできない。外部からのアクセスを許可する場合は、Netのあたりをごにょごにょするけど、それはまた今度。

問合せ