Python
pip
mod_wsgi
wsgi

mod_wsgiはpipで入れようねって話

More than 1 year has passed since last update.


私は正しくpythonを書いていた(つもりだった)

しかしある日突然の

ImportError: cannot import name parse

え?え?urllibってpipでいれるやつじゃないでしょ?  ...うん、違った。

もしかしてと思い

sys.version_info

を出力

sys.version_info(major=2, minor=7, micro=11, releaselevel='final', serial=0)

こ、これだー!


原因は不明?

正直意味がわからないので色々調べるが、やっぱり原因がわからない。

python -V

やっても

Python 3.5.1

sites-packageもしっかり動いてる。

しかしここらへんであることに気がつく。


wsgiをビルドした時に使ったのがpython2だった

当たり前の話である。そりゃそうだ。python2でビルドしているんだからpython2で動くわ。


しかしpython3ではwsgiのビルドができなかったんだ

ここにエラーを全文乗っけてると結構な分量になるので割愛するが、まあ、とにかくビルドできなかったんだ。

apxsが関係するエラーだったように思う。(そもそも以前やった時3でうまくいかず2でビルドしているので、今回はあまり深く調べていない。普通にできるぞ! って情報があったらぜひ教えて下さい)


っていうかそもそも自分でビルドする必要があんまりなかったんだ

人は忘れる生き物である、とは誰の言だったか。

ことさら私は忘れやすい生き物なので今後は気を使っていきたい。

そう、我々には pip があるということを。

pip install mod_wsgi

LoadModule wsgi_module /Users/name/.pyenv/versions/3.5.1/lib/python3.5/site-packages/mod_wsgi/server/mod_wsgi-py35.cpython-35m-darwin.so

すごく端的に書くと、これで動いた。

なんだかすごくはしょりすぎている気もするが、これで動いたので、こう書くしかない。

動いた。

ちなみにbrewも試してみたんだけど、動かなかった。

brew install mod_wsgi3

LoadModule wsgi_module /usr/local/Cellar/mod_wsgi3/3.5/libexec/mod_wsgi.so

これは以前brew doctorかなんかを使うときにpython3だと文句を言われたのでbrewではpython2をベースに働くように設定をしたような気がする(したのは確かなんだがどういう理由でどうやってそれを実現したのかはワスレテシマッタ)ので、それが原因だと思う。

恐らくそれさえ解決していればbrewで入れたmod_wsgiも正常に動くと思われる。

以上、Qiitaのエディタが予想外に使いやすくてついブログのような書き口になってしまったが、この記事が誰かのお役に立ってくれることを望むばかりである。