Pythonスクリプトを実行しているとき、私は同じディレクトリから二つの異なるスクリプトから2つの異なるクラスをインポートしようとしています。最初の作品は、二つ目は失敗し、理由のために私が把握することができていません。
私は、インポートされたスクリプトのうち、便利なコードのすべてを取って、私は解決策をテストしている間に変数の数を制限しようとするクラス名を除き、それらを同一にします。
問題が発生したとき、私は、これら2つのガイドに沿って、次のされていました
私はそれが心numbingly簡単な修正だと確信していますが、私はまだそれを把握することができていません。
ご協力いただきありがとうございます。
Pythonのバージョン
Python 3.6.9 :: Anaconda, Inc.
フォルダ構造
MSAs
__init__.py
lexer.py
main.py
parser.py
ファイルの内容
__init__.py
"""empty file"""
lexer.py
class Lexer():
def __init__(self):
self.hello = 'world'
parser.py
class Parser():
def __init__(self):
self.hello = 'world'
main.py
from lexer import Lexer
from parser import Parser
p = Parser()
スクリプトを実行するMSAs
フォルダー
msas> python main.py
ImportError: cannot import name 'Parser'
物事インターネットはしようとする私に言った、とその結果
これらのいくつかは、彼らが仕事をしなかったことを常識あるような気がしますが、私はすべての私のオプションを排出しようとしました。
モジュール名を接頭辞.
サブディレクトリを使用していない場合:
No module named '__main__.lexer'; '__main__' is not a package
No module named 'parser.Parser'; 'parser' is not a package
AttributeError: module 'parser' has no attribute 'Parser'
ImportError: cannot import name 'Parser'
import文の順序を切り替えます
ImportError: cannot import name 'Parser'
parser
Pythonの中のモジュールである標準ライブラリには、私はあなたのコードをインポートしようとしていると考えているので、Parser
ないあなたから、そのファイルからparser.py
ファイル。そのオブジェクトが存在しないので、あなたが得るImportError
あなたが参照してください。