さまざまなインポートルールに基づいて、チュートリアルに従ってFlask 3.5でPythonアプリを構築しています。同様の質問を探して、パスにフォルダーを追加することで、ネストされたフォルダーからのインポートに基づいてImportErrorを解決することができましたが、同じフォルダー内のスクリプトから関数をインポートすることに失敗し続けます(既にパスにあります)。フォルダー構造は次のとおりです。
DoubleDibz
├── app
│ ├── __init__.py
│ ├── api
│ │ ├── __init__.py
│ │ └── helloworld.py
│ ├── app.py
│ ├── common
│ │ ├── __init__.py
│ │ └── constants.py
│ ├── config.py
│ ├── extensions.py
│ ├── static
│ └── templates
└── run.py
App.pyで、次のコードを使用してconfig.pyから関数をインポートします。
import config as Config
しかし、私はこのエラーを受け取ります:
ImportError: No module named 'config'
同じフォルダー内の2つのファイルであるため、何が問題なのかわかりません。前もって感謝します
やってみました
import app.config as Config
それは私のためにトリックをしました。
同じフォルダからインポートするには、次を実行できます。
from .config import function_or_class_in_config_file
または、あなたが尋ねたようにエイリアスで完全な設定をインポートするには:
from ..app import config as Config
# imports all functions
import config
# you invoke it this way
config.my_function()
または
# import specific function
from config import my_function
# you invoke it this way
my_function()
App.pyが同じフォルダーからではなく呼び出される場合、これを行うことができます:
# csfp - current_script_folder_path
csfp = os.path.abspath(os.path.dirname(__file__))
if csfp not in sys.path:
sys.path.insert(0, csfp)
# import it and invoke it by one of the ways described above
これは私のために働く:
from config import *