1. ホーム
  2. python

[解決済み] Pythonに別のフォルダからインポートさせることができない

2023-01-17 12:05:19

質問

Pythonがサブフォルダにあるモジュールをインポートできないようです。インポートされたモジュールからクラスのインスタンスを作成しようとするとエラーが表示されますが、インポート自体は成功します。以下は私のディレクトリ構造です。

Server
    -server.py
    -Models
        --user.py

以下はserver.pyの内容です。

from sys import path
from os import getcwd
path.append(getcwd() + "\\models") #Yes, i'm on windows
print path
import user

u=user.User() #error on this line

そしてuser.py。

class User(Entity):
    using_options(tablename='users')

    username = Field(String(15))
    password = Field(String(64))
    email    = Field(String(50))
    status   = Field(Integer)
    created  = Field(DateTime)

エラーは AttributeError: 'module' オブジェクトには 'User' という属性がありません。

どのように解決するのですか?

というファイルを作成する必要があると思います。 __init__.py というファイルを作成し、pythonがそれをモジュールとして扱えるようにする必要があると思います。

そうすると、できるようになります。

from Models.user import User

の中にコードを入れることができます。 __init__.py (例えば、いくつかの異なるクラスが必要とする初期化コード) を含めることもできますし、空白のままにしておくこともできます。 しかし、それはそこになければなりません。