Pythonのは、2つの同一のクラスのいずれかが同じディレクトリをint型インポートすることはできません。

chriszumberge:

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

への変更 import parser.Parser

No module named 'parser.Parser'; 'parser' is not a package

への変更 from . import Parser

AttributeError: module 'parser' has no attribute 'Parser'

sys.pathに直接作業を挿入

ImportError: cannot import name 'Parser'

import文の順序を切り替えます

ImportError: cannot import name 'Parser'


jfaccioni:

parserPythonの中のモジュールである標準ライブラリには、私はあなたのコードをインポートしようとしていると考えているので、Parserないあなたから、そのファイルからparser.pyファイル。そのオブジェクトが存在しないので、あなたが得るImportErrorあなたが参照してください。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=392432&siteId=1