色々やったら以下のエラーが止まらない
ModuleNotFoundError: No module named 'encodings'
対象
Conoha VPSでDjango + Apache + WSGI + pyenv +Python venvでWeb開発をしている。
Conoha VPSは最初はシステムpythonを使う状態のテンプレートを提供しているのだが、これをpyenvを用いたpythonの仮想環境にしようとした。
結論
今回の原因は、rootからpyenvを使ってpython環境を構築したことだった
実は、お恥ずかしいことにあまり把握していなかったのだが、インストールしたパッケージは作成したvenv/lib/python3.X/site-packagesに保存されるが、pythonにもとから入っているencodingsなどは、元の/root/.pyenv/versions/3.9.0の中にある
試すとわかる
Python 3.9.0
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import encodings
>>> encodings.__file__
'/root/.pyenv/versions/3.9.0/lib/python3.9/encodings/__init__.py' >>>
そのため、このrootディレクトリにあるencodingsはapacheには読み込めないという感じ。
ユーザーアカウントでpyenvをinstallして、仮想環境を作成したら上手くいった