この記事に出くわし、すべての手順に従いました。しかし、pyDev は私のフラスコの拡張機能を認識しません。これは本当に面倒です。1つだけあります(これが鍵だと思います):
Touch /site-packages/flaskext/__init__.py
Touch
私が思うUNIXユーティリティです。Windowsでこれに相当するものはありますか?
Eclipse は、デフォルトでモジュールの静的分析を使用します。flask.ext
インポート リストを動的に作成します。Python シェルを使用して動的解析を強制するflask.ext
には、強制ビルトイン リストに追加します。
に進みPreferences -> PyDev -> Interpreters -> Python Interpreter
ます。通訳者を選択し、Forced Builtins
タブに移動します。をクリックしNew...
て入力しflask.ext
ます。
これには、PyDev がシェルを介して強制的にモジュールを分析する必要があります。
詳細については、PyDev マニュアルを参照してください。
プロジェクトが仮想環境にあり、そのプロジェクトを Eclipse に追加して、プロジェクトが仮想環境にインストールされているライブラリを使用するようにする場合は、次の手順に従う必要があります。
ステップ 1: 仮想環境への絶対パスを次のようにします。
C:\Users\sadegh\Desktop\flask_eclipse\fe\venv
ディレクトリに移動するwindow->preferences->PyDev->interpretors->Python Interpretor
と、
この仮想環境に割り当てられている python インタープリターがあります。この実行可能ファイルは、Eclipse に追加する新しい Python インタープリターになります。Scripts
python.exe
step2: に行くwindow->preferences->PyDev->Interpreters->Python Interpreter
新しいボタンをクリックすると、次のウィンドウがポップアップします。
フィールドに必要なものをInterpreter Name
記述し、ステップ 1 で言及した python.exe ファイルの絶対パスをフィールドに記述しInterpreter Executable
ます。
これをクリックするOK
と、次のポップアップが表示されます。
すべての項目を選択してクリックOK
ステップ3:上のペインで新しく追加されたインタープリターを選択し、下のペインでForced Builtin
タブに移動して、この下のペインの右側にある新しいボタンをクリックします。
そして、ポップアップするウィンドウで書き込みflask.ext
ます。
step4: すべてが設定されました:
新しいプロジェクトを開始する場合: 新しいプロジェクトを作成するときは、作成したPyDev Project
新しいインタープリターをこのプロジェクトのインタープリターとして選択します。
仮想環境で既存のプロジェクトをフラスコ プロジェクトに変換する場合は、プロジェクトを右クリックしてプロパティに移動しPyDev-Interpreter/Grammar
、インタープリターを作成した新しいインタープリターに変更します。
注:仮想環境でEclipseにサーバーを実行させたい場合は、次のようにFlask()インスタンスを含むコード内からサーバーを実行できます。
if __name__ == '__main__': #here i assume you have put this code in a file that
app.run() #contains variable "app", which contains the instance of #Flask(__main__)
私もこれに苦労しています.Flaskが拡張機能をインポートする方法に問題があるようです. ファイルを開くと、flask/ext/__init__.py
インポーターが使用されていることがわかります。私は PyDev がこれほど好きではないと思うので、このファイルを修正済みのインポートで編集しました:
import flask_login as login
import flask_sqlalchemy as sqlalchemy
import flask_wtf as wtf
def setup():
from ..exthook import ExtensionImporter
importer = ExtensionImporter(['flask_%s', 'flaskext.%s'], __name__)
importer.install()
setup()
del setup
また、Flask-SQLAlchemy インポートも壊れていることがわかったのでdb.Column
、ドキュメントで説明されているようにする代わりに、直接 sqlalchemy インポートを使用します。from sqlalchemy import Column, ForeignKey
touch
存在しない場合は空のファイルを作成し、存在する場合はファイルの変更時刻を更新します。
この目的にecho > /site-packages/flashext/__init__.py
は、コマンドラインで十分です。(ファイルは空白にはなりませんが、意味的には Python と同等の改行が 1 つだけ含まれています)。