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導入 as 時有任意給定數量的測試app.py

import src.app

我有兩個問題:

  • 程式碼編輯器喜歡emacsvim或者vscode確實抱怨import測試中的該子句,將其標記為紅色並且“適度”煩人。
  • 我從文字編輯器中調用pipenv run pytest來檢查測試。它失敗,因為src不是它可以找到的模組。如果我從專案目錄中的終端呼叫相同的命令,我會收到相同的錯誤。

如果我將它作為python模組調用pipenv run python -m pytest,它確實可以工作,因為它將當前目錄添加到PYTHONPATH.如果我從 a 啟動編輯器,pipenv shell測試也可以工作。無論我如何啟動編輯器,它import src.app都會標記為無效。

如果我啟動編輯器設置,PYTHONPATH=$PYTHONPATH:.測試也可以工作,但語法檢查仍然會抱怨。

emacs使用or等編輯器處理此問題的最簡潔方法是什麼vim?我不想轉向pycharm“自動”解決此問題的類似工具。

答案1

根據pipenv文件;載入調用.env目錄中的任何檔案。pipenv

這表示(例如)當您在使用層時test_app.py開啟時,項目的 會被加載(像往常一樣),但也會自動加載,並且文件的內部依賴項將起作用。emacspythonpipenv.env

例如,.env在專案的根目錄中使用此內容建立對我來說很有效:

PYTHONPATH=$PYTHONPATH:.

現在,您也可以直接執行單元測試,而emacs不會遇到匯入問題。

這是我能夠使其工作的唯一方法,但該解決方案感覺很黑客且不優雅。

相關內容