StackOverFlowでの英語の質問は簡単だが、返信があるかは別問題

StackOverFlowで英語の質問を投げてみました!

先日、LINE Clovaのハンズオンに参加したときにAWSとの連携をpythonのzappaというパッケージを利用することになったのですが、このzappaというのが曲者でしかもwindowsのアクセス禁止[WinError 5]が同時に発生してなかなか解決ができなかったので、StackOverFlowに質問を投げてみました。

参考にしたサイトはこちら
http://heppoko.hatenadiary.jp/entry/2013/12/24/170711

質問をすること自体は簡単でした。StackOverFlowのページに移動して
https://ja.stackoverflow.com/

登録していないなら右上から登録して完了したら質問をなげる。

使い方はQiitaみたいな感じだったので使っている人は馴染みがあるかもしれません。

実際に質問してみたのがこちら
→https://ja.stackoverflow.com/questions/48327/error-occurs-with-zappa-deploy-command?noredirect=1#comment49997_48327

試験的に質問を投げているため簡素なものになってます。なので、他の人からのフィードバックはまだなさそうですね。。。

まだ1日も経ってないのでそのうち誰かが答えてくれるかも。。。?

ところで、今回のエラーについて少しお話をしようと思います。

windowsユーザーがpipでinstallするとアクセス禁止[WinError 5]が起こるわけは?

windowsでpipを使用していると起こるアクセス禁止[WinError 5]。これはWindowsの仕様でファイルの権限が関係していることが多いようです。

例えば、cドライブの下にあるユーザーフォルダで他の人のフォルダ内に書き込みをする場合、ファイルの操作の制限がかかってしまいます。なので、もしコマンドプロンプトなどで操作したい場合は管理者権限で実行するとできることもあります。

では、今回のpipについてはどうでしょうか。

pipでインストールする場合は、コマンドプロンプトを管理者権限で実行すれば基本的に問題はありませんが、pythonをインストーラーで入れた場合、Anaconda Promptが入っていることもあります。もし、管理者権限のコマンドプロンプトでインストールが失敗する場合はAnaconda Promptで実行してみましょう。

と行った内容がweb上には多くありますが、今回はそれでもWinError 5が出ていました。原因の1つとして、zappaの実行環境に問題があるかもしれません。zappaはgithubにも記載されていますが、開発環境でしか実行することができません。なので、自分の端末以外にpythonやpipをインストールし、その独立した環境で操作する必要があります。
(※意外と融通がきかないのは残念でした)

その場合、半独立した環境になるので権限については知識がないとよくわからないエラーに悩まされます。開発環境用に用意したディレクトリに対してフル権限を与えてからpip install zappaを実行するのも良いかもしれません。

また、pip install zappaを2度実行すると、既存のpipのバージョンに依存することなくインストールが可能でした。
※1回目はWinError 5でエラーが出て、2回目はpipのバージョンが古い警告が出ますが無視すれば問題ないです。

その後、zappa initで実行ができるようになればzappaのインストールが完了したことになります。

zappaがインストールできたのにStackOverFlowに質問したのはなぜ?

なぜzappaのインストールができたのにStackOverFlowに質問したの?と思った人もいるかもしれませんね。実は、zappaのインストール後、zappa initも完了しzappa deployをしたところ、awsとの連携ができていないようでdeployができずにエラーで落ちてしまう、といった現象に行き当たったからです!「aws、よくわからん!」と6時間ぐらいの死闘のはてにそう思った次第でした。

まとめ

・zappaの環境構築についての日本語が少ないので、githubから英語で読む
・awsはよくできたシステムであるがゆえに簡単に使おうとすると対処ができない
・StackOverFlowに質問を出したけど、英語がひどい・説明が下手だと見向きもされない
・WinError 5 の権限問題はWindowsユーザーから知っておくといろいろ助かる

AWSはこれからも仲良くしていけたらと思うので、一から触って扱えるようにしたいですね。

コメント