PYTHONPATHが更新されていません。

PYTHONPATHが更新されていません。

現在、私はpyenv特定のpythonバージョンをインストールすることに慣れています。次に、それを使用してpipenvさまざまなプロジェクトの仮想環境を作成しますpython

現在、私のプロジェクト構造は次のとおりです。

foo/
  src/app.py
  src/__init__.py
  tests/unit/test_app.py
  tests/unit/__init_.py

test_app.py与えられた数のテストと同様にインポートしますapp.py

import src.app

2つの質問があります。

  • コードエディタはテストでこの条項を好むemacsか、vim実際にvscode苦情を表示し、import赤で表示し、「通常」迷惑にします。
  • pipenv run pytestテストを確認するためにテキストエディタで呼び出します。src見つからないモジュールではないため失敗します。プロジェクトディレクトリの端末で同じコマンドを呼び出すと、同じエラーが発生します。

pythonモジュールとして呼び出すと、pipenv run python -m pytest現在のディレクトリがに追加されますPYTHONPATHpipenv shell。どのようにエディタを実行しても無効とマークされますimport src.app

エディタ設定を実行するとPYTHONPATH=$PYTHONPATH:.テストも機能しますが、構文チェックではまだ問題が発生します。

emacsエディタを使用してこれを処理する最もクリーンな方法は何ですかvim?私はpycharmこの問題を「自動的に」解決するために同様のツールを使用したくありません。

答え1

ファイルに基づいて呼び出しディレクトリ内のすべてのファイルをpipenvロードします。.envpipenv

これは、(たとえば)test_app.pyレイヤー操作中に開くと、プロジェクトは(通常どおり)ロードされますが、自動的にロードされ、ファイルの内部依存関係が機能することを意味します。emacspythonpipenv.env

たとえば、.envプロジェクトのルートに次のコンテンツを使用して作成することが私に適しています。

PYTHONPATH=$PYTHONPATH:.

emacsインポートの問題なく単体テストを直接実行することもできます。

これが私がうまくいくことができた唯一の方法ですが、解決策は不快でエレガントではありません。

関連情報