ホームページ >バックエンド開発 >Python チュートリアル >Pytest の「ImportError: No module names...」エラーを修正するにはどうすればよいですか?

Pytest の「ImportError: No module names...」エラーを修正するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-04 13:29:11760ブラウズ

How Do I Fix

Pytest での ImportError: No Module Named の問題への対処

pytest の使用中に「ImportError: No module names...」というエラーが発生した場合は、次のことを考慮することが重要です特に Linux または Windows システムにおける PATH 構成の潜在的な問題。この特定のケースでは、ユーザーは Mac で easy_install を使用して pytest をインストールし、次のファイル構造を持つプロジェクトをテスト中に問題が発生しました:

repo/
   |--app.py
   |--settings.py
   |--models.py
   |--tests/
          |--test_app.py

この問題を解決するには、次のアプローチが推奨されます。

1. 「pythonpath」構成の利用 (Pytest >= 7)

Pytest は、「pythonpath」構成設定を介して sys.path の変更を可能にするコア プラグインを導入しました。この簡素化されたソリューションでは、プロジェクトの pyproject.toml または pytest.ini ファイルに次の行を追加します。

# pyproject.toml
[tool.pytest.ini_options]
pythonpath = [
  "."
]

# pytest.ini
[pytest]
pythonpath = .

ルート ディレクトリを基準としたパス エントリを指定することで、そのディレクトリを sys.path に効果的に追加します。インポートの問題を解決します。

2. 「conftest」ソリューションの実装 (Pytest < 7)

古いバージョンの pytest の場合、侵襲性の低いアプローチとして、プロジェクトのルート ディレクトリに「conftest.py」という名前の空のファイルを作成します。

$ touch repo/conftest.py

これにより、pytest は自動的に次の親ディレクトリを追加します。 「conftest.py」を sys.path に追加し、インポートが成功するようにします。

説明:

Pytest はテスト収集中に 'conftest' モジュールを検索してカスタムを収集しますフックと固定具。これらのカスタム オブジェクトをインポートするために、pytest は 'conftest.py' の親ディレクトリを sys.path に追加します。

結論:

問題を解決するための推奨アプローチpytest でのインポートの問題は、使用しているバージョンによって異なります。 pytest >= 7 の場合は 'pythonpath' 構成が優先されますが、pytest

以上がPytest の「ImportError: No module names...」エラーを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。