<powerline, msys2> msys2でpowerlineをやる。
ずっとやってみたかった、mys2
でpowerline
をやる。
やってみた。
ググると、pip install powerline-status
でインストールすればいいらしい。
インストール後、さっそく起動。 powerline-deamon -q
でゴー。
エラーがでた。。。
うーんと思って調査したら、どうも、anaconda
さんpython
では、fcntl
とかいうモジュールがない。
が、msys2
でインストールできる/usr/bin/python
にはある。
つうことで、anaconda python
をオフしないといけんらしい。
> powerline-daemon -q Traceback (most recent call last): File "C:/Anaconda3/Scripts/powerline-daemon", line 9, in <module> import fcntl ModuleNotFoundError: No module named 'fcntl' > winpty python Python 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 11:27:44) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import fcntl Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'fcntl' >>> quit() > /usr/bin/python Python 3.7.1 (default, Oct 30 2018, 05:59:02) [GCC 7.3.0] on msys Type "help", "copyright", "credits" or "license" for more information. >>> import fcntl >>> quit()
と、いうことで、anaconda python
をPATH
から抜いて、msys2
デフォルトの/usr/bin/python
を有効にする。
で、Powerline
をインストール。
>pip install powerline-status
でだ。
Powerline
ちゅうのは、矢印とかのかっこいい部分は、専用のフォントをいれないといけん。
ぐぐったら、このフォントがよさげだったか、次の理由により、Powerline
からフォントを持ってきた。
理由。
msys2
でtmux
をPowerline
化するには、mintty
のターミナルのフォント設定のLocale設定で、`C
を選ばないといけない。
やんないと、改行がうまくなく、ぐちゃぐちゃになる。ここ参考。
で、C
を選択すると、Ritcty
さんは、今度は、zsh
でかっこよくならない。
どうも、ja_JP
とC
でカッコよいやつのフォントのコードが異なってるっぽい。。。
なので、Powerline
本家から、フォントを持ってきて、インストール。
今回は、DejaVuSansMono
をイントールしてみた。
フォントサンプル。
https://github.com/powerline/fonts/blob/master/samples/All.md
インストールは、
Windows
ボタン+R
でファイル名を指定して実行
のダイアログボックスを出し、
control
と入力して、コントロールパネル
を開く。
で、フォントを選んで、.ttf
となってるファイルを入れこむ。
tmux.conf
の末尾に下記追加して、起動。
run-shell "powerline-daemon -q" source ~/.local/lib/python3.7/site-packages/powerline/bindings/tmux/powerline.conf
で、成功。 カッコよくなった。
ただ、1つ問題が。。。
zsh
+tmux
だと、zsh
のPowerline
のブランチの表示部分がずれる、、、
しかも、ls
だのpwd
だのコマンドが遅い。
なんかいちいち、Windows
のAntivirus Service
がブーンって動くせいで、遅い。
なんとかなるのかな、、、
マニュアル。
参考。
qiita.com
<pyinstaller, Python, WSH> Pythonスクリプトから実行ファイル(exe)を作る。
Python
スクリプトから実行ファイルexe
を作る、変換する。
pyinstaller
ちゅうのでできるらしい。
試してみた。
インストールは、pip
さんで。conda
さんにはなかった。
例のCalculatorをwin32com
で、制御するスクリプトを変換。
スクリプト。
#!/usr/bin/env python # -*- coding: utf-8 -*- import win32api as WScript import win32com.client if __name__ == '__main__': WshShell = win32com.client.Dispatch("WScript.Shell") WshShell.Run("calc") WScript.Sleep(100) WshShell.AppActivate("Calculator") WScript.Sleep(100) WshShell.SendKeys("1{+}", 0) WScript.Sleep(500) WshShell.SendKeys("2") WScript.Sleep(500) WshShell.SendKeys("~") WScript.Sleep(500) WshShell.SendKeys("*3") WScript.Sleep(500) WshShell.SendKeys("~") WScript.Sleep(2500)
で、変換。
>pyinstaller -F -w calc.py
で、なにやらいろいろ呪文が並ぶ。
で、calc\dist
というフォルダの下に、calc.exe
を発見。
できたっぽい。
で、クリック。
が、、問題発生
止まらない、、、
どんどんcalc.exe
プロセスが増殖して、やりたい放題。
暴走。。。
しょーが無しに、Windows強制シャットダウン。
あかんがや、、、まったく。。。
その後、sys.exit()
を最後に付ければ、暴走しないことを確認。
sys.exit()
は必須。
お世話になったところ。
<WSH, win32com, Python> WSHとwin32comの関係
WSH(Windows Script Host)
と、win32com
を眺めてみた。
win32com
はどうやら、おそらく、WSH
とほぼ同じ。
WScript
でCalc
を起動して、キーを送るスクリプト。
https://msdn.microsoft.com/ja-jp/library/cc364423.aspx
set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "calc" WScript.Sleep 100 WshShell.AppActivate "Calculator" WScript.Sleep 100 WshShell.SendKeys "1{+}" WScript.Sleep 500 WshShell.SendKeys "2" WScript.Sleep 500 WshShell.SendKeys "~" WScript.Sleep 500 WshShell.SendKeys "*3" WScript.Sleep 500 WshShell.SendKeys "~" WScript.Sleep 2500
これのpython/win32com
版。
#!/usr/bin/env python # -*- coding: utf-8 -*- import win32api as WScript import win32com.client if __name__ == '__main__': WshShell = win32com.client.Dispatch("WScript.Shell") WshShell.Run("calc") WScript.Sleep(100) WshShell.AppActivate("Calculator") WScript.Sleep(100) WshShell.SendKeys("1{+}", 0) WScript.Sleep(500) WshShell.SendKeys("2") WScript.Sleep(500) WshShell.SendKeys("~") WScript.Sleep(500) WshShell.SendKeys("*3") WScript.Sleep(500) WshShell.SendKeys("~") WScript.Sleep(2500)
動作はまったく同じ。
ちなみに、WScriptをsubprocess
で呼び出しても同じ。
#!/usr/bin/env python # -*- coding: utf-8 -*- import subprocess if __name__ == '__main__': subprocess.run("calc.vbs", shell=True)
なるほど。。。
と、いうことで、win32com
での制御は、基本WScript
どおり。
下記、マイクロソフトのところで、調べものすれば、結構思い通りに制御できそう。
参考。大変役にたちました。
<OCR, tesseract, python> 光学的文字認識をやってみた。
諸事情により、画像image
から、テキストを抽出をやってみた。
光学的文字認識Optical Character Recognition
というらしい。
自分の土俵でできるか、、だったが、幸いにmsys2
版があった。ラッキー。
で、必要なソフトのインストールからスタート。
このWiki
に従う。
Home · tesseract-ocr/tesseract Wiki · GitHub
>pacman -S mingw-w64-{i686,x86_64}-tesseract-ocr >pacman -S mingw-w64-{i686,x86_64}-tesseract-data-eng
mingw64を使ってこなかったが、ここで、大量にインストールが発生。
まあ、しょうがないので、進める。Go。
次。python
のパッケージのインストール。
>conda install pillow >pip install pyocr
で、環境変数設定。
export PATH=$PATH:/mingw64/bin export TESSDATA_PREFIX=/mingw64/share/tessdata
以上でインストール完了。
では、始めます。
In [7]: import pyocr In [8]: tool = pyocr.get_available_tools()[0] In [9]: tool Out[9]: <module 'pyocr.tesseract' from 'C:\\Anaconda3\\Lib\\site-packages\\pyocr\\tesseract.py'> In [10]: from PIL import Image In [14]: txt = tool.image_to_string( ...: Image.open('capture.PNG'), ...: lang='eng', ...: builder=pyocr.builders.TextBuilder(tesseract_layout=6) ...: )
できました。
できたtxt
を覗いてみましたが、、、 なんか、行けてない感じ。
単純な英語テキストなのに、完璧には変換できてない。ちと、がっかり感。
少しくぐると、
Google Cloud Vision API
というのがあって、こっちはすごいらしい。
次回試してみるかな。。。
<css> 線をひく
細い線を引きたい。
hr { height: 1px; border: none; border-top: 1px #000000 solid; }
solid まっすぐ dashed 点線 dotted 丸い点線
<ATOM> Proxy越しのアップデート、その2
Proxy越しのアップデート、その2。
久々に、アトムさんatom
のSetting
開いて、アップデートUpdate
しようとしたらこけた。
どうもプロキシさんが変わったので、設定しなおした。
ちと、はまったので、メモ。
その1...
atom
さんの設定ファイルは下記にある。
C:\\Users\\hage\\.atom\\.apmrc
その2...
設定ファイルの中身が正しく反映されているかは、下記コマンドで確認できる。
C:\Users\hage\.atom>apm config ls ; cli configs globalconfig = "C:\\Users\\hage\\.atom\\.apm\\.apmrc" user-agent = "npm/3.10.10 node/v6.9.5 win32 ia32" userconfig = "C:\\Users\\hage\\.atom\\.apmrc" ; environment configs node-gyp = "C:\\Users\\hage\\AppData\\Local\\atom\\app-1.23.3\\resources\\app\\apm\\bin\\\\..\\node_modules\\node-gyp\\bin\\node-gyp.js" ; userconfig C:\Users\hage\.atom\.apmrc http-proxy = "http://hagehage.hohoho.com:80" https-proxy = "http://hagehage.hohoho.com:80/" strict-ssl = false ; globalconfig C:\Users\hage\.atom\.apm\.apmrc cache = "C:\\Users\\hage\\.atom\\.apm" progress = false ; node bin location = C:\Users\hage\AppData\Local\atom\app-1.23.3\resources\app\apm\bin\node.exe ; cwd = C:\Users\hage\.atom ; HOME = C:\Users\hage ; "npm config ls -l" to show all defaults.
その3...
https-proxy
の設定のところは、プロキシの設定値を、https
でなくて、http
とs
を抜かないといけん。
これが一番はまった。
s
つけたままだと、アップデートのところで、次のエラーが発生した。
tunneling socket could not be established, cause=socket hang up
この人に助けられた。ありがとうです。
note.nkmk.me
昔の記事っす。
nekoyukimmm.hatenablog.com