header_medi8

ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin

2016年4月21日木曜日

VisualStudioCode で Python 実行時にモジュールが import できない場合の対処法

これまで、Anacondaに同梱されていた Spyder という Python IDE を使って Python のコードを書いてデバッグもやっていて、特に問題はなかったのですが、どうにも重い感じがする。。。

最近エディタを Sublime Text から Visual Studio Code に変更して、Python の Extension も追加して VS Code 上で実行できるようにしました。

普段は問題なく実行できていたのですが、あるとき急にあるはずのモジュールがimportできないというエラーになって困ってしまいました。。。

ちなみに、問題となったモジュールは pydot という graphviz を python で使いやすくしてくれるものです。

python は幾つかのバージョンを共存させるためにpyenvで管理しているのですが、
現在は anaconda-2.3.0 を使用していて、pythonのバージョンをターミナルで確認すると

$ python -V
Python 2.7.11 :: Anaconda custom (x86_64)

となってる。
pydot がインストールされているかも確認してみます。

$ conda install pydot
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata: ....
Solving package specifications: .........

# All requested packages already installed.
# packages in environment at /Users/uroshika/.pyenv/versions/anaconda-2.3.0:
#
pydot                     1.0.28                   py27_0

やっぱりインストールされてる。なんで import できないんだ。。。
何かがおかしい。

実行時にpythonのバージョンを表示してみる


ひとまず実行時に python のバージョンを表示してみることにします。
実行している python コードに以下のように書いて実行してみましょう。

import sys

print (sys.version)

すると、

2.7.11 |Anaconda custom (x86_64)| (default, Dec  6 2015, 18:57:58)
[GCC 4.2.1 (Apple Inc. build 5577)]

こんな感じで表示されました。
「ちゃんと pyenv で管理してる Anaconda の python v2.7.11 を使用してますよ」と言っているらしい。

次に、Debug 実行してみると、

2.7.10 (default, Jul 14 2015, 19:46:27)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)]

さっきと結果が違う。Anaconda の python じゃないものを使ってるみたい。
どうも、システムの python で実行しているらしい。

ということは、VS Code のデバッグ実行時に、pyenv で管理してるpython を使用するようにすれば大丈夫なはず!

VS Code の Debug 実行時に使用するpython を指定する


ただ、これを変更する方法を調べてみてもなかなか情報にたどり着けません。
そこで、「たぶん何か設定するところがあるやろう」と予想してました。

launch.json を開いて、Python の項目の途中に1行追加して「""」を入力します。
「""」の中で当てずっぽうで「python」と入力してみたら......



なんか、それっぽいのがあるじゃないですか!!!!

たぶんこの「pythonPath」に pyenv で管理してる Python のパスを指定してやれば良いはず。

ターミナルで 以下のコマンドを実行して、python の場所を確認します。

$ which python
/Users/uroshika/.pyenv/shims/python

※「uroshika」の部分は自分のユーザー名の読み替えてください。

あとは launch.json の “pythonPath” に、ここで表示された Python のパスを指定します。
変更したら保存して、もう一度 Debug 実行をやってみたら、無事 import Error にならずに実行できました。


2016年4月16日土曜日

Amazonアソシエイトの登録で承認されたければこれだけやっておけ!承認されずに困っている人がやるべきたった1つのこと

ブログをGoogle Blogger にお引越しして、せっかくの機会なので Amazon アソシエイトを始めてみようかと思っていろいろと調べてみたのですが、意外とハードルが高くて、なかなか承認されないらしい。

でも、A8.net 経由であれば簡単に承認されるという情報を得て、ある程度記事がたまったところで申請をしてみた。

結果は惨敗。

記事を増やして何度か申請してみるものの、やっぱり何度やっても上手くいかない。

諦めかけていたそのとき。ある情報に辿り着きました。

たった1つのやるべきこと


結論から先に行ってしまうと、ずばり!

いつも使っている Amazon のアカウントで申請すること

です。

私の場合は、メールアドレスをいくつか使い分けていたのですが、 Amazon は買い物専用のアドレスを使用していたため、Amazon アソシエイトは別のアドレスで申請していました。

ですが、どうやらAmazonさんには「どこの誰かもわからんやつには簡単に許可は出しませんよ」ということのようです。

つまり、いつも買い物で利用しているアドレスなら「あなたのことは知ってるから許可してあげるよ」くらいの感じなんでしょうか。

メールアドレスを使い分けている人にとってはちょっと嫌かもしれませんが、安心してくください。

登録後にメールアドレスを追加して、メインアドレスを変更することも可能です。

そちらの方法については、またの機会に書いてみることにします。


2016年4月6日水曜日

Visual Studio Code の「code」コマンドでエラーになる場合の対処法

「code」コマンドを使用できるようにするには、Visual Studio Code をターミナルから起動する方法を参照してください。

普通なら、上記リンク先のことを実行すれば「code」コマンドが使えるはずなんですが、
私の場合は、「code」を実行すると以下のエラーが出て Visual Studio Code を起動できませんでした。

$ code
  File "<string>", line 1
    import os,sys; print os.path.realpath(sys.argv[1])
                          ^
SyntaxError: invalid syntax
/usr/local/bin/code: line 10: ./MacOS/Electron: No such file or directory


結論を先に言ってしまうと、実はこれ Python のバージョンの問題でした。


Python 3系だとエラーになる


まずは、以下のコマンドを入力して Python のバージョンを確認してみてください。

$ python -V
Python 3.4.4 :: Anaconda custom (x86_64)

私は、pyenv で Python の管理をしているのですが、pyenv で anaconda3-2.3.0 を使用していて、そこで使われている Python のバージョンは 3.4.4 でした。

$ pyenv versions
  system
  2.7.8
  3.4.2
  3.5.0
* anaconda3-2.3.0 (set by /Users/hoge/.python-version)


エラーを修正する


ここで、もう一度「code」実行時のエラーを見てみましょう。

$ code
  File "<string>", line 1
    import os,sys; print os.path.realpath(sys.argv[1])
                          ^
SyntaxError: invalid syntax
/usr/local/bin/code: line 10: ./MacOS/Electron: No such file or directory

どうやら、print の構文エラーで怒られているようです。

実は。Python 3 では、print の仕様が変わっていて、print() にしないといけません。

なので、エラー箇所を修正します。

「/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code」

をエディタで開いて、以下の部分を変更します。

修正前:
function realpath() { python -c "import os,sys; print os.path.realpath(sys.argv[1])" "$0"; }

修正後:
function realpath() { python -c "import os,sys; print(os.path.realpath(sys.argv[1]))" "$0"; }

print() の書き方は、python 2系でも使用できるので、2系を使用している人も将来エラーが出て焦らないように変更しておくと良いと思います。

Visual Studio Code をターミナルから起動する方法

これまで、エディタは「Sublime Text 3」を使ってました。

だがしかし!最近、日本語入力があまりにも遅くてイライラする!!

なんとかできないかと調べていたら、 Mozc(もずく) という日本語入力を使えば、Sublime Text でも快適に日本語入力ができるという記事を見つけた。

Mozc(もずく)を使って Mac OSX の Sublime Text に日本語入力する方法

ちょっと読んでみたけど、非常にややこしや。。。
とりあえず、Sublime Text でなんとかする方法は、上記のページにお任せします。


Visual Studio Code がいいらしい


他のエディターに乗り換えようかと思っていろいろ調べていたら、どうも「Visual Studio Code」が良いらしい。

というわけで、乗り換えてみた。

Visual Studio Codeのページに行き「Code をダウンロード」を押すと、プラットフォームの選択画面にうなるので、自分の環境に合わせてファイルをダウンロードします。





私の環境は Mac なので、Mac用のファイルをダウンロードしました。

ダウンロードしたファイルは zip ファイルで、解凍すると「Visual Studio Code.app」になっていました。

これを「/Application」ディレクトリに移動すればインストール完了です。

ターミナルから起動できるようにする


これで、Visual Studio Code が利用できるようになったのですが、個人的にはターミナルから直接コマンドでエディタを起動したい。
Sublime Text を使用しているときは、エイリアスを設定しておいてターミナルから「subl」コマンドでSublime Text を起動できるようにしていました。

Visual Studio Code でも同じように、ターミナルから起動できるようにしたいと思って調べてみたら、Visual Studio Code にも「code」というコマンドがあるみたい。

$ ls /Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/
code

これを使えるようにすればいいんだけど、Sublime Text のときと同じように、~/.bash_profile とかでエイリアスを設定しておけばいいかなと思ったら、もっと簡単な方法があった。

1. Visual Studio Code を起動します。



2. 「Command + Shift + P」を押します。



3. ここで「shell」と入力して、表示された「Shell Command: Install 'code' command in PATH」を選択します。



4. 以下のように表示されたらOK!




ものすごく簡単でびっくりしました!

これで、ターミナルから

$ code

とすれば Visual Studio Code が起動します。
以下のようにして、ファイル名を指定して起動することも可能。

$ code hoge.md 

「code」と入力したらエラーになる場合


普通なら、これで一件落着なんですが、簡単とか言ときながら、実は私の環境ではちょっとはまりました。

codeコマンドを実行すると以下のエラーが出て起動できませんでした。

$ code
  File "<string>", line 1
    import os,sys; print os.path.realpath(sys.argv[1])

この現象が起きた方は、対処法を別の記事(↓)に書いておいたので、そちらを参考にしてください。

Visual Studio Code の「code」コマンドでエラーになる場合の対処法