1. ホーム
  2. python

[解決済み] モジュールに属性がない

2022-01-19 02:36:54

質問

ディレクトリに、いくつかの .py 各ファイルはいくつかのクラスを定義しています。また、空の __init__.py というディレクトリがあります。

例えば

myproject
    __init__.py
    mymodule
        __init__.py
        api.py
        models.py
        views.py

をインポートしようとしています。 mymodule で、これらすべてのファイルで定義されたクラスにアクセスします。

from myproject import mymodule

print mymodule.api.MyClass 

というエラーが表示されます。 mymodule には属性がありません。 api . なぜ? また、なぜ1つのファイルだけにアクセスできるのでしょうか ( models.py ) で、他はダメなんですか?

In [2]: dir(banners)
Out[2]:
['__builtins__',
 '__doc__',
 '__file__',
 '__name__',
 '__package__',
 '__path__',
 'models']

解決方法は?

問題は、サブモジュールが自動的にインポートされないことです。明示的にインポートする必要があります。 api モジュールを使用します。

import myproject.mymodule.api
print myproject.mymodule.api.MyClass

もし、どうしても api をインポートする際に利用可能です。 myproject.mymodule に置くことができます。 myproject/mymodule/__init__.py :

import myproject.mymodule.api

すると、期待通りに動作するようになります。

from myproject import mymodule

print mymodule.api.MyClass