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使用或等编辑器处理此问题最简洁的方法是什么vim?我不想使用pycharm和类似工具来“自动”解决此问题。

答案1

根据pipenv文件;加载调用.env目录中的任何文件。pipenv

这意味着(例如)当您在使用层时test_app.py打开时,项目的 会被加载(像往常一样),但也会自动加载,并且文件的内部依赖项将起作用。emacspythonpipenv.env

例如,.env在项目的根目录中使用此内容创建对我来说很有效:

PYTHONPATH=$PYTHONPATH:.

现在,您还可以直接运行单元测试,而emacs不会遇到导入问题。

这是我能够使其工作的唯一方法,但该解决方案感觉很黑客且不优雅。

相关内容