python エラー。TypeError: 'module' オブジェクトは呼び出し可能ではありません Solution
Python エラー。TypeError:'モジュール'オブジェクトは呼び出し可能ではありません解決策は、これは私が過去2日間で遭遇した最も頭痛の種であり、以下は、このバグに独自のソリューションを提供することです、私は同じ人々とお互いから学ぶことを望む。
内容
1. 私のプロジェクトディレクトリの紹介と、遭遇したサブエラーの解決法
1. 私のプロジェクトディレクトリの紹介と、遭遇したサブエラーの解決法
まず方向性を明確にするために、見つけたプロジェクトのディレクトリをアップロードする。
TextrankExtractor.pyをkeywordsファイルの下で実行すると、TypeError: 'module' object is not callableが発生します。私のプログラムTextrankExtractor.pyはChineseStopKeywords.pyとSegmentFactory、そしてwordVector.pyモジュールを呼び出し、ClusterWordGraph、 WeightedPositionWordGraph、Word2VecWordGraphモジュールも呼ぶので、明確にimportしなければ、 'module' object is not callableということになるのでしょうね。
異なるパスでモジュールを呼び出すには、まずモジュールの絶対パスを導入します。モジュールの絶対パスが明確でない場合は、sysコードから取得できます。
import sys
a = os.path.abspath(-file-) #Get the absolute path
print(a)
print(os.path.dirname(a)) # get the upper level path
base_dir = os.path.dirname(os.path.dirname(a)) # get the upper level path
print(base_dir)
sys.path.append(base_dir)
絶対パスを取得する場合は、次の例のように、実行したいメインプログラム内でモジュールを導入します。
import sys
sys.path.append('D:\\pyworkspace\\\11\\\python_KeyExtractor\\commons')
import ChineseStopKeywords
import SegmentFactory
from commons import wordVector
sys.path.append('D:\\pyworkspace\\\11\\\\python_KeyExtractor\\\keywords\\\\graph')
import ClusterWordGraph
import WordGraph
from log import get_logger
from keywords.graph.ClusterWordGraph import ClusterWordGraph
from keywords.graph.WeightedPositionWordGraph import WeightedPositionWordGraph
from keywords.graph.Word2VecWordGraph import Word2VecWordGraph
2. いくつかの共通コマンド
import example # example モジュールを呼び出すという意味です。
from example import example # exampleモジュール内のexampleメソッドの一つを呼び出します。
from test import example # test はパッケージ名、example はモジュール名で、1レベルのネスト構造です。
from test.test1 import example #test , test1 はパッケージ名、test1 は test の中、example はモジュール名です。
from test.test1. funct1 import example #functはexampleモジュールのfunct1メソッドです。
import test #test はパッケージ名、このコマンドは _init_ ファイルを実行するのと同じです。
3. モジュールに関する知識
(1)モジュールの優位性
これは誰もが知っていることでしょう:高い保守性と書くべきコードの減少
(2) モジュールの種類
Python標準ライブラリ; サードパーティモジュール; アプリケーション定義モジュール
4. パッケージに関する知識
この部分は他のブログから学んだのですが、かなり多くの知識が詰まっているように感じます。
まず、私の理解では、パッケージとは _init_.py ファイルを含む必要があるフォルダのことです。
公式の説明では、パッケージは "dotted module names" を使って Python のモジュール名前空間を構造化する方法、つまりパッケージは .module name を使って Python のモジュール名前空間を整理するものである、とされています。
<ブロッククオートPython 3 では、パッケージの下に _init_.py ファイルがなくても、パッケージをインポートしてもエラーは報告されません; パッケージは、使用と簡単なプログラム起動のためにインポートされることを意味します。
(1) 共通のディレクトリ構造
glance/ #Top-level package
├── __init__.py #Initialize the glance package
├── api #Subpackage for api
│ ├── __init__.py
│ ├── policy.py
│ └── versions.py
├── cmd #Subpackage for cmd
│ ├── __init__.py
│ └── manage.py
└── db #Subpackage for db
├── __init__.py
└── models.py
test/ #Top-level package, same level as glance
├── __init__.py #Initialize the glance package
└── mou.py #Initialize the glance package
#File contents
#policy.py
def get():
print('from policy.py')
#versions.py
def create_resource(conf):
print('from version.py: ',conf)
#manage.py
def main():
print('from manage.py')
#models.py
def register_models(engine):
print('from models.py: ',engine)
#Test in a file at the same level as the package glance
#main program mou.py
import glance.db.models #d import the models module in db, a subpackage under the glance package
glance.db.models.register_models('mysql')
(2)パッケージの利用
# In mou.py, which is at the same level as glance
import glance
glance.cmd.manage.main()
'''
Execution result.
AttributeError: module 'glance' has no attribute 'cmd'
Solution.
#glance/__init__.py
from . import cmd
#glance/cmd/__init__.py
from . import manage
Execution.
#is in mou.py at the same level as glance
import glance
glance.cmd.manage.main()
パッケージ名だけをインポートしても、そのパッケージに含まれるすべてのサブモジュールはインポートされない、例.
Execute in the mou.py file
from glance.db import models
models.register_models('oracle')
'''Result.
from models.py: oracle
'''
from glance.db.models import register_models
register_models('mysql')
'''Result.
from models.py: mysql
(3) from 。
<ブロッククオートimport fromの後にインポートされるモジュールは、明示的にドットで囲むことができないものでなければならないことに注意してください。そうでなければ、例えばfrom a import b.cは間違った構文になるため、構文エラーが発生します。
Execute in the mou.py file
from glance.db import models
models.register_models('oracle')
'''Result.
from models.py: oracle
'''
from glance.db.models import register_models
register_models('mysql')
'''Result.
from models.py: mysql
関連
-
AttributeError: 'module' オブジェクトには 'SSL_ST_INIT' という属性がありません。
-
軌跡平滑化法-滑り平均平滑化法(移動平均法)
-
Python error TypeError: must be str, not bytes
-
TypeError: JSONオブジェクトは'TextIOWrapper'ではなく'str'である必要があります。
-
穴の中 TypeError: サポートされていないオペランドタイプ(s) for /: str' と 'int' です。
-
Python3-ValueError:not enough values to unpack (expected 2, got 0)
-
python error AttributeError: 'DataFrame' object has no attribute 'tolist'.
-
Pythonライブラリ問題初級編 - 解決策:numpy frombuffer - AttributeError: 'str' object has no attribute '__buffer__'
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例