私は@Miguelをフォローしていますflask mega tutorial これは素晴らしいことです。第3章では、WebフォームとflaskWTF拡張について説明し、このような拡張をインストールしますSudo pip install Flask-WTF
をもたらしました
Flask-WTFを正常にインストールしましたFlask WTForms Werkzeug Jinja2 itsdangerous markupsafe
しかし、./run.py
エラーが表示されます。
Flask.ext.wtf`というモジュールはありません
エラーをグーグルで調べて、次のように実行しようとしました:flask/bin/python run.py
が同じエラーを受け取りましたが、flask/bin/activate
更新: 同じエラーが発生した場合、これが私にとって問題を解決したものです。私は次のものをインストールしました、確かにそれらはすべて必要ではありませんが、私は1つ1つがトリックをしたことを見つけるために行っていないのでそれらをすべてリストする
flask/bin/pip install flask-login
flask/bin/pip install flask-openid
flask/bin/pip install flask-mail
flask/bin/pip install sqlalchemy
flask/bin/pip install flask-sqlalchemy
flask/bin/pip install sqlalchemy-migrate
flask/bin/pip install flask-whooshalchemy==0.55a
flask/bin/pip install flask-wtf
flask/bin/pip install pytz
flask/bin/pip install flask-babel
flask/bin/pip install flup
おそらく、古いバージョンのインポートスタイルを使用しています。
from flask.ext.wtf import Form, TextField, BooleanField
from flask.ext.wtf import Required
インポートスタイルは0.9.0バージョンから変更されました。インポートを必ず更新してください:
from flask.ext.wtf import Form
from wtforms.fields import TextField, BooleanField
from wtforms.validators import Required
この変更に関する注意は、ドキュメントのアップグレードセクションにあります。
https://flask-wtf.readthedocs.org/en/latest/upgrade.html#version-0-9-
同じ問題がありました。もう一度 steps 1 を読んで、スリップした場所を確認します。
プロジェクトに必要なモジュールを忘れずにインストールしてください。
この場合、次のとおりです。
flask/bin/pip install flask-login
flask/bin/pip install flask-openid
flask/bin/pip install flask-mail
flask/bin/pip install sqlalchemy
flask/bin/pip install flask-sqlalchemy
flask/bin/pip install sqlalchemy-migrate
flask/bin/pip install flask-whooshalchemy==0.55a
flask/bin/pip install flask-wtf
flask/bin/pip install pytz
flask/bin/pip install flask-babel
flask/bin/pip install flup
この仮想環境「flask」を作成したため、インストールされているすべてのモジュールは仮想環境(flask)でのみ使用可能です。
「python run.py」ではなく、「flask/Scripts/python run.py」を実行することを忘れないでください
jbubの権利ですが、あなたが現在抱えている問題ではなく、あなたが遭遇する問題に対処しています-チュートリアルは日付が付けられており、ユーザーが使用するライブラリのバージョンについては言及していませんチュートリアルでは、jbubの言う内容と一致するようにインポート行を変更しない限り、問題が発生するだろうと書かれています。
しかし-あなたが現在抱えている問題はそれではない-もしそうなら、あなたのエラーはNo module named flask.ext.wtf.Textfield
現時点では、ライブラリをまったく見ることができません。
つまり、Flask-WTFライブラリを正しい場所にインストールしていないことを意味します。この場合、flask
というディレクトリの下に作成した仮想環境にインストールする必要があるようです。少しわかりやすくするために、そのディレクトリをvenv
として参照します。
仮想環境には小さなスペースがあります。仮想環境に足を踏み入れてから、棚に物を置く(ライブラリをインストールする)必要があります。そのため、最初に仮想環境をアクティブにする必要があります。そのため、ターミナルを起動し、作成した仮想環境(venv
dir)に移動してからアクティブにします(部屋に入ります)。
source bin/activate
コンソールプロンプトが変わり、この端末に対してアクティブになったことを示すようになります。これで端末が部屋に立っているので、必要に応じてライブラリをインストールでき、Sudo
は不要です。小さな部屋はユーザーがプレイしても安全なので、ドアの外の世界には影響しません。したがって、flask-wtf(およびpipに問い合わせて必要なその他のライブラリ)をインストールしましょう。
pip install flask-wtf
など.
今、あなたは仮想環境にいるので、そこに存在するpythonのバージョンを起動し、セットアップしたすべてのライブラリを見ることができます。端末プロンプトは、仮想環境がまだアクティブであることを示します。run.py
ファイルを実行してpython run.py
そしてそれはあなたの問題を解決するはずです。
異なるインポートスタイルを変更し、フラスコ、flask-wtfを再インストールした後でも、まだ動作しない場合:config.py( "config.pyは異なる名前、たとえばapp_config.pyなど)
行を挿入
sys.path.insert(0, os.path.join(os.path.dirname(__file__),
'venv/Lib/site-packages'))
自分のアプリのlibパスを設定します。私の場合は「venv/Lib/site-packages」でした
これを行う: 。フラスコ/ビン/アクティベート
その後、正常に動作します。
乾杯。