Atom+Hydrogen で Python 実行時のカレントディレクトリがおかしかった際の対処
事の発端
Atom+Hydrogen で Python のファイルを実行させたが、同じカレントディレクトリ内のモジュールをインポートできず、
ModuleNotFoundError: No module named '~~'
などとエラーを出した。
検証プロセス
import sys, os
sys.path.append(os.chdir())
と追加してはどうか → 失敗
ModuleNotFoundError: No module named '~~'
などとエラーを出す。
- os.chdir() を使わず以下のように working folder (カレントディレクトリ) のパスを手打ちで入力するのはどうか → 成功
import sys sys.path.append("working folder のパス")
などと書き込めば、うまく動く。
ただし、module を読み込みたいすべてのファイルに追記しなければならず非効率。
- この時、os.chdir() で working folder がきちんと参照されていないことに気づく。
実際、print(os.chdir()) で表示されるのが working folder ではなく、プロジェクトフォルダー内の一番最初のフォルダーになっている。
解決方法
Hydrogen の Settings に Directory to start kernel in という項目があり、そのデフォルトである
The first started project's directory (default)
から
current directory of the file
に変更
TensorFlow と Keras で警告【2019/08/22, numpy-1.17.0】
問題
Python で tensorflow (あるいは keras)使おうと思ったら警告出まくった。
例:FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
解決策
調べたら numpy の最新版 (ver.1.17.0) に tensorflow (ver1.14.0) がまだ対応してないことが原因だと判明。
numpy-1.17.0 から numpy-1.16.4 にダウングレードして無事解決。
詳しい解決方法は、参考先にて。
参考
Google 検索を便利にするアドオン
Google 検索の画面で、
サイト名にフォーカスするショートカットキーがないか探していた。
解決策
Google Chrome(あるいは Firefox)に、
拡張機能「Google Search Navigator」を追加すれば良い。
※ 2018/12/15現在、「Web Search Navigator」に名前が変更されているようです。
使い方
検索結果画面にて、以下のショートカットキーが使える。
Google Chrome の場合
- 「↓」または「j」: 次の検索結果を選択
- 「↑」または「k」: 前の検索結果を選択
- 「/」または「Esc」: 検索ボックスにフォーカス
- 「Enter」または「Space」: 検索結果を開く
- 「Ctrl+Enter」または「⌘+Enter」または「Ctrl+Space」: 裏に新規タブで開く
- 「Ctrl+Shift+Enter」: 新規タブで検索結果を開く
- 「a」または「s」: 項目「すべて」で検索結果を表示
- 「i」: 項目「画像」で検索結果を表示
- 「v」: 項目「動画」で検索結果を表示
- 「m」: 項目「地図」で検索結果を表示
- 「n」: 項目「ニュース」で検索結果を表示
参考になったサイト
最終的に下のサイトにぶちあたったことで解決したけど、よくよく見てみると、
「I created an open source extension to fix this and make keyboard shortcuts configurable.
You can install it from the Chrome Webstore: Google Search Navigator.
Hope you find it useful, but in any case- feedback is welcome!」
と言っているので、どうやら製作者本人に行きついたみたい。ありがたや。
superuser.com
Windows+Python で writer="ffmpeg" を使えるようにする
matplotlib でグラフを作成し、MP4形式で保存する方法を探していた。
参考:Pythonのmatplotlibでgifアニメを作成する | 自調自考の旅
このサイトを参考にグラフを作成し、保存を下のコードで試みた。
ani.save("test.mp4", writer="mpeg4")
しかし、下のエラーが出て上手く行かない。
ValueError: Cannot save animation: no writers are available. Please install ffmpeg to save animations.
エラーの指示通り、下のサイトを参考に ffmpeg インストールし、パスも設定した。
しかし、やはり上手く行かない。
参考:windowsにffmpegをインストールする | ぱーくん plus idea
困り果てていたが、偶然 Anaconda のサイトにぶち当たり、無事解決した。
参考:Ffmpeg :: Anaconda Cloud
解決策
コマンドプロンプトを立ち上げ以下を入力して実行する。
conda install -c menpo ffmpeg
インストールに時間はかかるものの、writer="mpeg4" が機能するようになる。
インストールして待つこと以外、何もしなくてよい。
※ 2018/05/06 追記
以下のサイトを見ると、上のやり方では ffmpeg が少し古いバージョンになるらしい。
参考:python - Matplotlib-Animation "No MovieWriters Available" - Stack Overflow
そこで以下のコマンドをコマンドプロンプトで実行すれば良い
conda install -c conda-forge ffmpeg
Atom で BibTeX 環境を整える
はじめに
ようやく重たい腰を上げて、 BibTeX 環境を整えることにした。
理想は、BibTeX ファイルをそれ専用のフォルダに置き、
Atom のパッケージ latexer を機能させること。
あと、理解できなかったので、latexmk ファイルに手を出さないこと(白目)。
環境
- OS: Windows 10 (64 bit)
- TeX ディストリビューション: TeX Live 2017
- エディタ: Atom 1.23.3
- Atom のパッケージ (TeX関連) : latex、latexer、language-latexsimple、pdf-view
BibTeX を専用フォルダに置く
カレントディレクトリにいちいちファイルを作るのは、とても面倒なので、
TeX Live で用意されているフォルダ
C:/texlive/texmf-local/bibtex/bib/local
に、BibTeX ファイルを置くことにする。(もちろん、このフォルダである必要はない)
ここでは、ファイル名を「foo.bib」とし、参照リストも作成し終えたものとする。
BibTeX の読み込み
参考文献を置きたいタイミングで、TeX ソースコードに下を書く。
\bibliographystyle{amsplain} \bibliography{C:/texlive/texmf-local/bibtex/bib/local/foo.bib}
すると、\cite{ とタイプするだけで、検索ボックスと候補が並ぶ。
(著者名や論文名で検索をかけて、該当するものを Enter)
ここで、上記ではファイル名の絶対パスを指定しているが、
「¥」や「\」ではなく「/」でフォルダを区切っているので、注意。
BibTeX 用フォルダを使わない場合(非推奨)
一応、上記以外の方法も紹介しておく。
まず、BibTeX ファイル「foo.bib」をカレントディレクトリにおく。
(毎回ファイルを作ることになるため、非推奨としている)
参考文献を置きたいタイミングで、TeX ソースコードに下を書く。
\bibliographystyle{amsplain} \bibliography{foo}
感想
ものすごく単純なことに半日を費やしてしまった。
難しいことを何もしなくていいのに、これになかなか気づけなかった・・・。
変に理解不能なマクロを組まずに済んだので、良しとしよう・・・。
ちなみに、自分は documentclass を article や amsart でやっているので、
LaTeX Font: Font shape `JT1/gt/m/it' undefined using `JT1/gt/m/n' instead
などと、フォントに関する注意がたくさんでる。
これは jsarticle でやれば、注意がでなくなるので、気にしないことにした。
消す方法は他にもあるけど、TeX ソースコードに変なこと書きたくないし。
参照サイト
一番お世話になったページ:
- https://github.com/thomasjo/atom-latex/issues/337
- https://tex.stackexchange.com/questions/6805/bib-library-file-in-a-different-directory-how-to-use-mendeley-centralised-b
- https://www.bountysource.com/issues/27742731-bibliography-files-found-only-in-same-latex-file
Latexmk とかがわかる人向けのページ:
- https://ichiro-maruta.blogspot.jp/2016/01/atom-latex-on-windows.html
- http://ktashiro.net/archives/492
BibTeX そのものについて参考にしたページ:
Atom で TeX 環境を整える
環境
OS: Windows 10 (64 bit) (←32 bit 版ではない)
※ OS が異なる場合、差異が生じますので、ご容赦ください。
インストール
1.Atom のインストール
- Atom 公式サイト https://atom.io/ を開く。
- 下のようなボタンがあるので、クリックする。
- フォルダ「ダウンロード」を開くと、ファイル「AtomSetup-x64.exe」があるはずなので、それをダブルクリックして実行する。
2.TeX Live のインストール
※とても時間がかかるので、TeX Live のインストールは寝る前などがおすすめ。
- https://www.tug.org/texlive/acquire-netinstall.html を開き、下図の箇所をクリック。
- フォルダ「ダウンロード」を開くと、ファイル「install-tl-windows.exe」があるはずなので、それを右クリックして、「管理者として実行」をする。
※上手く行かなければ、TeX Live - TeX Wiki を参考に、TeX Live をインストールする。
Atom の設定
1.パッケージのインストール
- 初回起動の際、下のようなボックスが出るので「No, Never」を選択
- キーボードの「Ctrl」と「,」を同時押下(以下、「ctrl-,」と書く)し、「Settings」を開く。
- 下のように「Install」をクリックし、パッケージ名を検索してインストールする。
- 以下のパッケージを検索して、インストール。
latex
latexer
language-latexsimple
pdf-view
project-manager
file-icons
japanese-menu
※「language-latex」だと数式中で Snippets が機能しないので、現状では「language-latexsimple」がおすすめ。
2.個人設定
- 下の順でクリックし、個人設定(ファイル名「config.cson」)を開く。
- そこに以下を追加で書き込み、「ctrl-s」を同時押下して保存。
(下のをコピペするなら、カーソルを乗せると、右らへんに「select」ボタンが現れるので、そこをクリック)
"*": "autocomplete-plus": confirmCompletion: "enter" core: telemetryConsent: "no" editor: showIndentGuide: true showInvisibles: true latex: cleanPatterns: [ "**/*.aux" "**/*.aux.bak" "**/*.bbl" "**/*.bcf" "**/*.blg" "**/*.dvi" "**/*.fdb_latexmk" "**/*.fls" "**/*.idx" "**/*.idx.bak" "**/*.ilg" "**/*.ind" "**/*.lof" "**/*.log" "**/*.lol" "**/*.lot" "**/*.nav" "**/*.out" "**/*.ps" "**/*.snm" "**/*.synctex.gz" "**/*.toc" "/**/_minted-{jobname}" "/{output_dir}/sage-plots-for-{jobname}.tex" "/missfont.log" "/texput.log" "/texput.aux" ] engine: "platex" "pdf-view": fitToWidthOnOpen: true "project-manager": alwaysOpenInSameWindow: true welcome: showOnStartup: false ".latex.tex.text": "bracket-matcher": autocompleteCharacters: [ "()" "[]" "{}" "$$" ] editor: tabLength: 4 tabType: "hard"
3.シートの設定
- 下の順でクリックし、スタイルシート(ファイル名「style.less」)を開く。
- そこに以下を追加で書き込む。
atom-text-editor { .syntax--math { color: hsl(128, 80%, 40%); } }
更に頑張って設定
以上の設定で十分機能するが、より便利にし、なおかつ Atom の使い方を理解するために、以下の設定をする。
1.「project-manager」の設定
- 予め TeX フォルダを作成しておく。
※ドキュメントフォルダ下に作らないこと。
Windows 10 になってから、アクセス権の関係で TeX Live がうまく機能しないことがある。
- 「ctrl-shift-a」を同時押下し、ドキュメントフォルダ内の TeX フォルダを選択し「フォルダーの選択」を押す。
- 「ctrl-\(または ctrl-¥)」を同時押下し、下のような TeX のプロジェクトツリーが表示されるのを確認。
- 「ctrl-shift-p」を同時押下し、コマンドパレットを開く。
- コマンドパレットの検索欄に
Project Manager: Save Project
を入力し、これを実行する。
- 以下のような画面が現れるので、「Save」を押す。
2.Snippets の設定
- 「パッケージ」→「Package Generator」→「Generate Atom Package」とクリック。
- 現れたパレットの「my-package」を「my-snippets-latex」に書き換え「Enter」を押下。
- 「my-snippets-latex」内のフォルダとファイルをすべて削除。
- フォルダ「snippets」を作成。
- フォルダ「snippets」内にファイル「symbols-greek.cson」を作成し、そこに以下を書き込む。
'.math.latex': '\\alpha': 'prefix': 'a' 'body': '\\\\alpha' '\\beta': 'prefix': 'b' 'body': '\\\\beta' '\\Gamma': 'prefix': 'G' 'body': '\\\\Gamma' '\\gamma': 'prefix': 'g' 'body': '\\\\gamma' '\\Delta': 'prefix': 'D' 'body': '\\\\Delta' '\\delta': 'prefix': 'd' 'body': '\\\\delta' '\\epsilon': 'prefix': 'ep' 'body': '\\\\epsilon' '\\varepsilon': 'prefix': 'vep' 'body': '\\\\varepsilon' '\\zeta': 'prefix': 'z' 'body': '\\\\zeta' '\\eta': 'prefix': 'et' 'body': '\\\\eta' '\\Theta': 'prefix': 'Th' 'body': '\\\\Theta' '\\theta': 'prefix': 'th' 'body': '\\\\theta' '\\vartheta': 'prefix': 'vth' 'body': '\\\\vartheta' '\\iota': 'prefix': 'i' 'body': '\\\\iota' '\\kappa': 'prefix': 'k' 'body': '\\\\kappa' '\\Lambda': 'prefix': 'L' 'body': '\\\\Lambda' '\\lambda': 'prefix': 'l' 'body': '\\\\lambda' '\\mu': 'prefix': 'm' 'body': '\\\\mu' '\\nu': 'prefix': 'n' 'body': '\\\\nu' '\\xi': 'prefix': 'x' 'body': '\\\\xi' '\\Pi': 'prefix': 'p' 'body': '\\\\Pi' '\\pi': 'prefix': 'p' 'body': '\\\\pi' '\\varpi': 'prefix': 'vp' 'body': '\\\\varpi' '\\rho': 'prefix': 'r' 'body': '\\\\rho' '\\varrho': 'prefix': 'vr' 'body': '\\\\varrho' '\\Sigma': 'prefix': 'S' 'body': '\\\\Sigma' '\\sigma': 'prefix': 's' 'body': '\\\\sigma' '\\varsigma': 'prefix': 'vs' 'body': '\\\\varsigma' '\\tau': 'prefix': 't' 'body': '\\\\tau' '\\Upsilon': 'prefix': 'U' 'body': '\\\\Upsilon' '\\upsilon': 'prefix': 'u' 'body': '\\\\upsilon' '\\Phi': 'prefix': 'Ph' 'body': '\\\\Phi' '\\phi': 'prefix': 'ph' 'body': '\\\\phi' '\\varphi': 'prefix': 'vph' 'body': '\\\\varphi' '\\chi': 'prefix': 'c' 'body': '\\\\chi' '\\Psi': 'prefix': 'Ps' 'body': '\\\\Psi' '\\psi': 'prefix': 'ps' 'body': '\\\\psi' '\\Omega': 'prefix': 'O' 'body': '\\\\Omega' '\\omega': 'prefix': 'o' 'body': '\\\\omega' '\\varGamma': 'prefix': 'vG' 'body': '\\\\varGamma' '\\varDelta': 'prefix': 'vD' 'body': '\\\\varDelta' '\\varSigma': 'prefix': 'vS' 'body': '\\\\varSigma' '\\varUpsilon': 'prefix': 'vU' 'body': '\\\\varUpsilon' '\\varTheta': 'prefix': 'vTh' 'body': '\\\\varTheta' '\\varPhi': 'prefix': 'vPh' 'body': '\\\\varPhi' '\\varLambda': 'prefix': 'vL' 'body': '\\\\varLambda' '\\varPsi': 'prefix': 'vPs' 'body': '\\\\varPsi' '\\varXi': 'prefix': 'vX' 'body': '\\\\varXi' '\\varOmega': 'prefix': 'vO' 'body': '\\\\varOmega' '\\varPi': 'prefix': 'vP' 'body': '\\\\varPi' '\\varkappa': 'prefix': 'vk' 'body': '\\\\varkappa'
- フォルダ「snippets」内にファイル「symbols-hebrew.cson」を作成し、以下を書き込む。
'.math.latex': '\\aleph': 'prefix': 'aleph' 'body': '\\\\aleph' '\\digamma': 'prefix': 'digamma' 'body': '\\\\digamma' '\\beth': 'prefix': 'beth' 'body': '\\\\beth' '\\daleth': 'prefix': 'daleth' 'body': '\\\\daleth' '\\gimel': 'prefix': 'gimel' 'body': '\\\\gimel'
- フォルダ「snippets」内にファイル「brackets.cson」を作成し、以下を書き込む。
'.math.latex': '\\left \\right': 'prefix': 'left-right' 'body': '\\\\left $1 \\\\right $0' '()': 'prefix': 'soft-b' 'body': '\\\\left ( $1 \\\\right )$0' '{}': 'prefix': 'curly-b' 'body': '\\\\left \\\\{ $1 \\\\right \\\\}$0' '[]': 'prefix': 'hard-b' 'body': '\\\\left [ $1 \\\\right ]$0' '||': 'prefix': 'abs' 'body': '\\\\left | $1 \\\\right |$0' '|| ||_{}': 'prefix': 'Norm' 'body': '\\\\left \| $2 \\\\right \|_{$1}$0' '|| ||': 'prefix': 'norm' 'body': '\\\\left \| $1 \\\\right \|$0' '\\Bra': 'prefix': 'Bra' 'body': '\\\\Bra{$1}$0' '\\Ket': 'prefix': 'Ket' 'body': '\\\\Ket{$1}$0' '\\Braket': 'prefix': 'Braket' 'body': '\\\\Braket{ $1 | $2 }$0' '\\Set': 'prefix': 'Set' 'body': '\\\\Set{ $1 | $2 }$0'
- フォルダ「snippets」内にファイル「fractions.cson」を作成し、以下を書き込む。
'.math.latex': '\\frac': 'prefix': 'frac' 'body': '\\\\frac{$1}{$2}$0' '\\tfrac': 'prefix': 'tfrac' 'body': '\\\\tfrac{$1}{$2}$0' '\\dfrac': 'prefix': 'dfrac' 'body': '\\\\dfrac{$1}{$2}$0' 'd/dx': 'prefix': 'diff' 'body': '\\\\frac{d$2}{d${1:x}$2}$0' 'partial d/dx': 'prefix': 'pdiff' 'body': '\\\\frac{\\\\partial$2}{\\\\partial ${1:x}$2}$0'
- フォルダ「snippets」内にファイル「integrals.cson」を作成し、以下を書き込む。
'.math.latex': '\\int_{}^{}': 'prefix': 'Int' 'body': '\\\\int_{$2}^{$3} $4 \, d${1:x}$0' '\\int': 'prefix': 'int' 'body': '\\\\int $2 \, d${1:x}$0' '\\iint_{}': 'prefix': 'Iint' 'body': '\\\\iint_{$2} $3 \, d${1:x}$0' '\\iint': 'prefix': 'iint' 'body': '\\\\iint $2 \, d${1:x}$0'
- 以上を終えた段階で、プロジェクトツリーは下のようになる。
- ここで、一旦 Atom をすべて閉じ、Atom を再起動する。
- TeX を開くときは、「alt-shift-p」を同時押下し、現れたパレットの TeX を選択。
- 新たに latex 用の Snippets を追加したい場合、「ctrl-,」を同時押下して設定を開く。
- 次に、下の順に「パッケージ」クリック→「my-snippets-latex」を検索→「my-snippets-latex」の名前の横らへんをクリック。
- 下のような画面が開けるので、「View Code」をクリック。
- 「my-snippets-latex」のプロジェクトツリーが現れるので、好きなように編集。
感想
Snippets はパッケージをダウンロードした方が良いから、そのうち修正するかも。
自作して、GitHub に上げるのも良いけど、やり方がよくわからない・・・。