現在、私は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
現在のディレクトリがに追加されますPYTHONPATH
。pipenv shell
。どのようにエディタを実行しても無効とマークされますimport src.app
。
エディタ設定を実行するとPYTHONPATH=$PYTHONPATH:.
テストも機能しますが、構文チェックではまだ問題が発生します。
emacs
エディタを使用してこれを処理する最もクリーンな方法は何ですかvim
?私はpycharm
この問題を「自動的に」解決するために同様のツールを使用したくありません。
答え1
ファイルに基づいて呼び出しディレクトリ内のすべてのファイルをpipenv
ロードします。.env
pipenv
これは、(たとえば)test_app.py
レイヤー操作中に開くと、プロジェクトは(通常どおり)ロードされますが、自動的にロードされ、ファイルの内部依存関係が機能することを意味します。emacs
python
pipenv
.env
たとえば、.env
プロジェクトのルートに次のコンテンツを使用して作成することが私に適しています。
PYTHONPATH=$PYTHONPATH:.
emacs
インポートの問題なく単体テストを直接実行することもできます。
これが私がうまくいくことができた唯一の方法ですが、解決策は不快でエレガントではありません。