名前の衝突: 同一のファイル名を持つライブラリのインポート
Python インポートを扱うときは、既存のライブラリにちなんでスクリプトに名前を付けることを避けることが不可欠です。実行すると競合が発生し、外部機能にアクセスできなくなります。
このような場合、Python は、プリインストールされたモジュールよりもローカル モジュールを優先します。これは、sys.path の先頭に現在のディレクトリが含まれているため、Python が同じ名前のローカル スクリプトを見つけやすくなります。
たとえば、requests という名前のスクリプトがあるとします。 py を使用してリクエスト パッケージと対話しようとすると、ローカル スクリプトがインストールされているバージョンをシャドウするため、失敗します。その結果、ImportError や NameError から、「モジュール 'requests' に属性 'get' がありません」という AttributeError に至るまで、一連のエラーが発生します。
この問題を解決するには、ローカル スクリプトの名前を一意の名前に変更します。既存のライブラリと衝突しないこと。さらに、requests.pyc ファイル (Python 3 の pycache ディレクトリにあります) を確認して削除します。インタプリタが引き続きこのファイルを参照し、エラーが生成され続ける可能性があります。
注: 直接インポートしている別のモジュールによってインポートされたモジュールと同じような名前をファイルに付けた場合にも衝突が発生する可能性があります。たとえば、copy.py という名前のファイルを作成し、pandas をインポートしようとすると、pandas 自体が copy をインポートするため、ImportError が発生する可能性があります。
この問題を軽減するには、Python モジュールで一般的に使用される名前の使用を避け、競合を防ぐために一意の名前を付けます。
以上が同一のファイル名が原因で発生する Python インポート エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。