web-dev-qa-db-ja.com

同じフォルダー内のファイルから関数をインポートする

さまざまなインポートルールに基づいて、チュートリアルに従って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つのファイルであるため、何が問題なのかわかりません。前もって感謝します

21
Zemian

やってみました

import app.config as Config

それは私のためにトリックをしました。

24
macdrai

同じフォルダからインポートするには、次を実行できます。

from .config import function_or_class_in_config_file

または、あなたが尋ねたようにエイリアスで完全な設定をインポートするには:

from ..app import config as Config
12
Juju
# 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
3
stefan.stt

これは私のために働く:

from config import *
1
Omar Cusma Fait