web-dev-qa-db-ja.com

PyCharmの解決-flask.ext.sqlalchemyとflask_sqlalchemy

アプリケーションで次の形式を使用すると、PyCharmsの解決/オートコンプリート機能を除いてすべてが機能します。

from flask.ext.sqlalchemy import SQLAlchemy

アプリケーションで次の形式を使用すると、すべてが機能します。しかし、残念ながら、ライブラリをインポートする正しい方法ではありません。

from flask_sqlalchemy import SQLAlchemy

PyCharmに最初の構文を正しく解決させる方法はありますか?

23
Harold Smith

_flask.ext_名前空間はtransistion名前空間です。FlaskExtensionDevelopmentExtension Import Transitionセクション を参照してください。 =ドキュメント:

しばらくの間、Flask拡張子に名前空間パッケージを使用することをお勧めしました。これは、多くの異なる競合する名前空間パッケージシステムが存在し、pipが異なるシステム間で自動的に切り替わるため、実際には問題があることが判明しました。ユーザーのための問題の。

そして

Flask拡張機能は、拡張機能が新しいパッケージ名に移行できるように、_flask.ext.foo_または_flask_foo_ではなく_flaskext_foo_からインポートするようにユーザーに促す必要がありますユーザーに影響を与えることなく。

そのため、バージョン間でtransitionに、_flask.ext_エイリアスが追加されました。これにより、_flask_[name]_のインポート時に_flask.ext.[name]_パッケージのインポートが自動的に試行されます。しかし、その移行は今や議論の余地があります。 _flask.ext_のみに依存しているパッケージはもう見つかりません。

そのため、実際のモジュール名を使用してPyCharmにモジュールの内容をオートコンプリートさせるのは完全に問題ありませんです。

まだ古いバージョンの拡張機能を使用していて、将来互換性が必要な場合にのみ、実際にはhave _flask.ext_を使用します。その未来はすでにここにあります。

39
Martijn Pieters

ご参考までに。 flask.extは非推奨であり、正しい方法は次のとおりです。

from flask_sqlalchemy import SQLAlchemy

誰かがこれを見つけた場合SO Googleでの質問。

10
lepture

Virtualenvを使用し、PyCharmでプロジェクトにそのvirtualenvを設定します。私はあなたと同じ問題を抱えていて、正しいvirtualenv(flaskとflask_sqlalchemy拡張子を含む)を設定した後、私の問題は解決しました。

PyCharmでプロジェクトのvirtualenvを設定するには( JetBrains Webヘルプから ):

使用可能なインタープリターのリストに既存の仮想環境を追加するにはプロジェクト設定の[プロジェクトインタープリター]ページで、[ 。ドロップダウンリストで、[ローカルの追加]を選択します。

enter image description here

開いた[Select Python Interpreter]ダイアログボックスで、目的のPython実行可能ファイルを選択し、[OK]]をクリックします。

さらに、プロジェクトのルートにrequirements.txtを追加してみてください。その後、PyCharmは、不足している依存関係をインストールするように通知します。

1
Mehdi Sadeghi