同じディレクトリにapp.py
とdatabase.py
という2つのファイルがあります。 主に私持って、次のコードスニペット:メインスコープの有無にかかわらずインポート
app.py
import database
db = "demo_database"
print(database.show_database_information())
database.py
from app import db
database_username = "root"
database_password = "password"
def show_database_information():
information = {}
information["filename"] = db
information["username"] = database_username
information["password"] = database_password
return information
私はapp.py
を実行しようと、私は次のエラーを得た:
Traceback (most recent call last):
File "K:\PyPrac\circular_call\app.py", line 1, in <module>
import database
File "K:\PyPrac\circular_call\database.py", line 1, in <module>
from app import db
File "K:\PyPrac\circular_call\app.py", line 3, in <module>
print(database.show_database_information())
AttributeError: module 'database' has no attribute 'show_database_information'
その後、私はapp.py
を更新し、以下のような__main__
チェックを含める:
import database
db = "demo_database"
if __name__ == '__main__':
print(database.show_database_information())
app.pyは、今ではエラーなしでスムーズに動作します。私はいくつかの質問を持っている
、エラーの名前が最初のシナリオで発生している何
- ?説明が必要です。
__main__
スコープを指定して実行するのはなぜですか?- このような操作を実行する方がよいでしょうか?
「 '' circular import'''を作成していますが、メインスコープを使ってどのように解決されていますか? – arsho
@arsho私は自分の答えを更新しました。それがあなたを助けることを願っています。 –
これはホットフィックスですが、今度は関数が2回呼び出されます。{'ファイル名': 'database.sqlite'、 'ユーザー名': 'ルート'、 'パスワード': 'パスワード': 'パスワード' 'password': 'password'} '' 'アップデートをありがとう。 – arsho