Flask-OpenIDライブラリv1.2.5をインポートしようとすると、私のUbuntu 16.04.3 x64 WebサーバーでFlaskアプリケーションを実行すると、次のエラーが表示されます。
File "/usr/local/lib/python2.7/dist-packages/openid/oidutil.py", line 17, in <module>
from urllib.parse import urlencode
ImportError: No module named parse
私は、このモジュールが3.5.2の代わりにPython 2.7.5(マシンにインストールされている)を使用して読み込まれていることも理解しています(これもインストールされています)。
Pythonのバージョンを確認すると、Pythonがマシンにインストールされていることが確認されます。
>> python -V
Python 3.5.2
仮想環境はpython 3で初期化されました:
python3 -m venv env
Flaskアプリはまだpython 2.7.5のファイルを使用しているようです。
これが本当に問題であれば、デフォルトを設定する方法やFlaskが正しいバージョンのPythonを使用するようにする方法はありますか?私のアプリケーションは、自分のPCの開発環境でエラーなく実行されます。
回答:
回答№1は2私の仮想環境は正しく設定されていましたが、実際Apache Webサーバー上で動作するmod_wsgiはPythonバージョン2.7.Xでコンパイルされ、3.5.2ではなくPython 2.7.5でFlaskがロードされていました。
この問題を解決するために、私は最初にpython 3.5.1 +を実行するwsgiのバージョンに更新しました
sudo apt-get install libapache2-mod-wsgi-py3
この時点から、フラスコアプリケーションの仮想ホストとwsgiファイルがPythonバージョン3で正しく設定されている必要があるため、フラスコアプリケーションが実行されないことがあります。
このチュートリアルに従ってください: http://devmartin.com/blog/2015/02/how-to-deploy-a-python3-wsgi-application-with-apache2-and-debian/
また、VirtualHostの設定をこの記事で説明した説明に変更する必要があります。 https://stackoverflow.com/a/39419825/9367575