Pythonインポート兄弟ディレクトリエラー



Python Import Sibling Directory Error



著作権に関する声明:この記事は、CSDNブロガー「ShellCollector」の元の記事です。CC4.0BY-SAの著作権表示に従い、元のソースリンクとこの声明を添付してください。
元のリンク:https://blog.csdn.net/jacke121/article/details/77260071

————————————————



pycharmは現在のファイルディレクトリをそのsourse_pathに自動的に追加しません。 make_directoryを-> Sources Rootとして右クリックし、現在の作業フォルダーをsource_pathに追加します。

もう一つ:
モデルは、同じレベルのディレクトリを示すドットを追加します。 from .models import classN
インポート機能の実際のアプリケーションには、まだ多くの落とし穴があります。
たとえば、モジュール名なしでモジュールにクラスを直接インポートします
cccというパッケージを作成すると、次のinitには何も書き込まれず、空になります。
次に、bbb.byのコンテンツは次のとおりです。



def a(): print (1)

この機能にアクセスしたい場合は
まず、最初のポイント、言い回し:
ccc.bbb import aから、彼はパッケージ名とモジュール名でのみ特定の関数をインポートできることに注意してください
ccc import aから直接使用すると、アラームが発生します。アラームは次のとおりです。

>>> from ccc import a Traceback (most recent call last): File '', line 1, in ImportError: cannot import name 'a'

実際、重要なのは、ccc import aから渡す場合、重要なのはinitの内容です。
下の図3に示すようにinitコンテンツを書くと
.bbb import aから、.bbbはどういう意味ですか?これは、同じレベルのディレクトリの下にあるbbbモジュールです。前に2つのドットがある場合、それは上位レベルのディレクトリのbbbです。

今、重要な概念があります! ! ! A
パッケージをインポートすると、このパッケージのinit.pyファイルが実際にインポートされるため、initに他のインポート関数を記述した場合は、yesと同じになります。初期化中に他のものをインポートするのに役立ちました。 A
ちなみに、次の例のように、パッケージをインポートするときに関数をインポートしました。 ! A
è&iquestéåå&frac34çæè&iquest°



このトピックから他のトピックまで、ファーストクラスのフラスコを実行するときに理解できませんでした。なぜフラスコからFlaskをインポートできるのでしょうか。 A
最初のフラスコはパッケージで、2番目のFlaskはクラスですが、実際には、このFlaskクラスはflaskパッケージディレクトリのapp.pyにあります。 A
そこで、フラスコパッケージのinit.pyを見に行きました。彼がFlaskクラスをインポートしたことが判明したので、flaskパッケージをインポートすると、Flaskクラスを直接インポートできます。
.appから参照Flask、Request、Response
.appは、フラスコパッケージの下のinitと同じレベルのapp.pyを意味します
è&iquestéåå&frac34çæè&iquest°