計算物理屋の研究備忘録

Linux, Cygwin, Mac, zsh, emacs等の使い方、設定などのメモ

EmacsのPython環境構築まとめ

2017年6月21日更新

Flycheckを使ってシンタックスチェック

目次

Flycheck

Flycheckは様々な言語に対応しているEmacsシンタックスチェックパッケージ。今回はPythonでflake8によるPEP8の文法チェックを使えるようにすることを目指した。

下準備

使用するPythonEmacs上でpathが通るようにしておく。
シェルのPATHをEmacsに引き継がせる - 計算物理屋の研究備忘録

flycheckでflake8を使うには、flake8をインストールするだけでflycheckが勝手に使ってくれるらしい。pythonでflake8をインストールしておく。condaを使った。

conda install flake8

インストー

package.elを使ってインストールするだけ。MELPAからインストールする。 helmユーザーはhelm-flycheckもインストールしておくと、flycheckのエラー表示にhelmを使うことができるのでおすすめ。

設定

init.elとかに1行書くだけ。簡単

(global-flycheck-mode)

使い方

flycheckの設定がうまくいけば、自動的にリアルタイムでエラー箇所を表示してくれるようになる。エラーが出ているところにカーソルを合わせればエコーエリアにエラーメッセージが表示される。

M-x helm-flycheckでhelm-flycheckを使えばエラーメッセージ一覧が表示されるし、helmなので絞り込みも可能で、コードのエラー箇所にジャンプすることもできてめちゃくちゃ便利。

シェルのPATHをEmacsに引き継がせる

UbuntuのランチャーからGUIEmacsを起動すると、シェルのPATHが引き継がれない。(ターミナルから起動するとちゃんと引き継ぐ)。過去にpyenvを使って入れたPythonでjediを設定するときにこの問題に出くわした。シェルのPATHが引き継がれないと、Emacs上では自分でいれたPythonではなく、システムの/usr/bin/pythonなどを見にいってしまう。

簡単にシェルのPATHを引き継ぐ方法があった。

参考のサイトはここ

qiita.com

上のリンク先に書いてあるようにすればいい。

  1. package.elを使ってMELPAなどからexec-path-from-shellをインストー
  2. init.elなどに(exec-path-from-shell-initialize)と書いておく

これで普段使ってるシェルのPATHを引き継ぐことができる。簡単。

——— 2017/06/21 追記 ———-
Macでも同じことをしようとしたらうまくいかなかった。Macではitermの設定でzshを使っていて、ログインシェル自体はbashのままだった。exec-path-from-shellでは、デフォルトのログインシェルのPATHなどを引き継ぐらしい。

参考サイト kiririmode.hatenablog.jp

Macのログインシェルをzshに変更する。GUIから変更可能

システム環境設定 –> ユーザとグループ –> 左下の鍵を外す –> ユーザを右クリック –> 詳細オプション

——— 追記終了 ———-

Sphinxで数式を書く時のlatexのエラー

Sphinxで数式を書くときにエラーが出た。
MacTex Liveを入れるときにfullではなく必要最小限のBasic Texを入れたのでいろいろパッケージが足らないらしい。
結論から言うと以下のパッケージを入れるとエラーが解消された。

  • ucs
  • anyfontsize
  • dvipng

以下詳細

! LaTeX Error: File `utf8x.def' not found

SphinxではpdfTexを使うらしく、utf-8に対応していないらしい。ucsというパッケージを入れればいいらしい。

CTAN: Package ucs

tlmgrでインストールする

$ sudo tlmgr install ucs

make htmlしようしたらまたエラーが出た

! LaTeX Error: File `anyfontsize.sty' not found.

anyfontsizeがない。インストー

$ sudo tlmgr install anyfontsize

makt htmlしようとするとまた、エラー

WARNING: dvipng command 'dvipng' cannot be run (needed for math display), check the imgmath_dvipng setting

divpngがない。インストー

sudo tlmgr install dvipng

これでOK。make htmlが通って、うまく数式もpngで表示された。

Ubuntuへbluetoothでファイルを送信

Ubuntu 16.04 LTS

UbuntuデフォルトのBluetoothマネージャー(?)ではファイル送信しかできない。

スマホなどからUbuntubluetoothでファイルを送信する場合、Ubuntu SoftwareからBluetooth マネージャー (blueman)をインストール。これを起動した状態でスマホと接続し、スマホからファイルを送信すればUbuntuが受信してくれる

Kivyのインストール

目次

Kivy

kivy.org

公式サイトにあるようにKivyはPythonクロスプラットフォームNUI(Natural User Interface)

要するに、Linux, Mac, Windows, Android, iOSなどで動くGUIアプリケーションを作るためのライブラリ。pythonで簡単にGUIアプリが作れるというので勉強。マルチタッチにも対応しているとか。

MacにKivy 1.9.1をインストール

公式のインストラクションの通りにインストールすればいい。Mac用にKivy.appが用意されているのでこれを使う。

Installation on OS X — Kivy 1.9.2-dev0 documentation

Python3を使うことにする。 Kivy-1.9.1-osx-python3.7zを公式からダウンロードする。7zを解凍するにはbrewでp7zipをインストールする。そして解凍するとKivy.appができる。

あとはインストラクション通りにコマンドをコピペしていく

$ sudo mv Kivy2.app /Applications/Kivy.app
$ ln -s /Applications/Kivy.app/Contents/Resources/script /usr/local/bin/kivy

これでインストールできた。簡単。
この方法でインストールすると自動的にKivy専用の仮想環境が作られる。上記コマンドですでにリンクがはられているのでkivyというコマンドを使うことで簡単にこの仮想環境が使用できる。

この仮想環境にpipで何か入れたい場合は

$ kivy -m pip install <modulename>

pythonスクリプトを実行する場合は

$ kivy yourapplication.py

かなり使い勝手がいい。

動作テスト

公式サイトのトップに乗っている、hello worldのサンプルスクリプトを試す

hello.py

from kivy.app import App
from kivy.uix.button import Button

class TestApp(App):
    def build(self):
        return Button(text='Hello World')

TestApp().run()
$ kivy hello.py

Hello Worldという文字が出たウィンドウが現れて無事に起動できた。

Ubuntu 16.04 LTSへインストール

Pythonのバージョンは3.5.2。システムのpython3にKivy 1.9.1を入れる。 下記インストラクションに従う

Installation on Linux — Kivy 1.9.2-dev0 documentation

stable versionのppaを追加してKivyをインストールする。依存関係も全て入れてくれるので楽

$ sudo add-apt-repository ppa:kivy-team/kivy
$ sudo apt-get update
$ sudo apt-get install python3-kivy

インストール完了。Macと同様にテストプログラムを走らせる

$ python3 hello.py

うまく動いた。

Ubuntuのpyenvとanacondaの環境のpythonにインストール

失敗

失敗の記録を残しておく。ちなみに、システムのpython3にvenvで仮想環境作って試しても同じエラーでつまづいたから諦めた。

ググると仮想環境で入れようとすると、結構同じエラーで苦戦していて、特に解決策は見つからなかった。 システムにそのまま入れて使うことにした。

------------ 以下、失敗記録 ----------

KivyのインストールにはCythonが必要なのでpipでいれる。

$ pip install Cython

バージョンは、Cython 0.25.2

kivyの公式によると、kivy 1.9.1で動作チェックするときにCython 0.23を使っているので本当は0.23を使ったほうがいい。

pipでkivyを簡単にインストールできるかと思って試すと、見事にエラーが出てインストールできなかった。素直に公式サイトを見ることにした。

Installation on Linux — Kivy 1.9.2-dev0 documentation

このリンク先のInstallation in a Virtual Environmentのところを参考にする。

SDL2関係のパッケージが必要らしい。これがUbuntuに入ってなかったので書いてある通りにインストールする。いくつかはすでに入っていたので入っていないやつを書く

$ sudo apt-get install ffmpeg
$ sudo apt-get install libsdl2-dev
$ sudo apt-get install libsdl2-image-dev
$ sudo apt-get install libsdl2-mixer-dev
$ sudo apt-get install libsdl2-ttf-dev
$ sudo apt-get install libportmidi-dev
$ sudo apt-get install libswscale-dev
$ sudo apt-get install libavformat-dev
$ sudo apt-get install libavcodec-dev

これで足りないものを入れたので、あらためてkivyをpipでインストール

$ pip install kivy

エラーも出ずにインストールできた。
(実はまだこれだと実行するときにエラーが出る)

動作テスト

Hellow Worldのサンプルプログラムを試す
テキスト関係でエラーが出た

[WARNING] [Config      ] Older configuration version detected (0 instead of 14)
[WARNING] [Config      ] Upgrading configuration in progress.
[INFO   ] [Logger      ] Record log in /home/yamashita06/.kivy/logs/kivy_16-12-20_0.txt
[INFO   ] [Kivy        ] v1.9.1
[INFO   ] [Python      ] v3.5.2 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:53:06) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]
[INFO   ] [Factory     ] 179 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_gif (img_sdl2, img_pil, img_ffpyplayer ignored)
[CRITICAL] [Text        ] Unable to find any valuable Text provider at all!
(省略)
pil - ImportError: No module named 'PIL'

PIL --> Pillow

PILがないと言われたのでPILをpipで入れようとしたらなぜかインストールできない。調べてみるとPILは開発が止まっていて、python3.5に対応していない。PillowというPILをforkしたやつが今は使われてるみたいなので、こっちを入れる

$ pip install pillow

動作テスト2

テキストのところはクリアしたが、Windowのところでエラーが出た

[INFO   ] [Logger      ] Record log in /home/yamashita06/.kivy/logs/kivy_16-12-21_6.txt
[INFO   ] [Kivy        ] v1.9.1
[INFO   ] [Python      ] v3.5.2 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:53:06) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]
[INFO   ] [Factory     ] 179 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_gif, img_pil (img_sdl2, img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: pil(['text_sdl2'] ignored)
[CRITICAL] [Window      ] Unable to find any valuable Window provider at all!

X11が見つからないみたいなエラーも出ていたのでよくわからない。ライブラリが足りないのか・・・。

Ubuntu 16.04 LTSに最新版のblenderをインストール

インストール

現時点(2016年12月17日)のblenderの最新バージョンは2.78

Ubuntu Softwareを使ってもblenderはインストールできるが少しバージョンが古いので下記コマンドppaリポジトリを追加してインストールする

$ sudo add-apt-repository ppa:thomas-schiex/blender
$ sudo apt-get update
$ sudo apt-get install blender

これで2.78がインストールされた