ホームページ > バックエンド開発 > Python チュートリアル > Python スクリプトの名前がインポートされたライブラリと競合するとどうなりますか?

Python スクリプトの名前がインポートされたライブラリと競合するとどうなりますか?

DDD
リリース: 2024-12-28 12:12:15
オリジナル
423 人が閲覧しました

What Happens When Your Python Script's Name Conflicts with an Imported Library?

スクリプトと同じ名前のライブラリのインポート

インポートされたライブラリと同じ名前をスクリプトに付ける場合 (例:requests.py)、輸入に関するさまざまな問題が発生する可能性があります。これらの問題は、使用するインポート方法に応じて、AttributeErrors、ImportErrors、または NameErrors として現れる可能性があります。

これは、スクリプトの名前が sys.path にインストールされているライブラリを隠し、意図したインポートよりもローカル スクリプトを優先するために発生します。

症状

普通インポート

import requests

res = requests.get('http://www.google.ca')
print(res)
ログイン後にコピー
  • エラー: AttributeError: モジュール 'requests' に属性 'get' がありません

特定のインポートから名前

from requests import get

res = get('http://www.google.ca')
print(res)
ログイン後にコピー
  • エラー: ImportError: 名前 'get' をインポートできません

モジュールのインポート元パッケージ

from requests.auth import AuthBase
ログイン後にコピー
  • エラー: ImportError: 'requests.auth' という名前のモジュールがありません。 'requests' はパッケージではありません

Star Import

from requests import *

res = get('http://www.google.ca')
print(res)
ログイン後にコピー
  • エラー: NameError: name 'get'ではありません定義

解決策

この問題を解決するには、スクリプトの名前を、インポートされたモジュールと競合しない別の名前に変更します。さらに、生成された request.pyc ファイル (存在する場合) を削除して、キャッシュされたバイトコードによる干渉を防ぎます。

トレースバックのデバッグ

これらのエラーが発生した場合は、トレースバックを注意深く調べてモジュール名の衝突を特定してください。スクリプト名とインポートされたモジュールの間にあります。

以上がPython スクリプトの名前がインポートされたライブラリと競合するとどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート