同目录下两个终端pytest运行结果不一致,应排查哪些环境变量差异
需重点排查的环境变量及差异点
PYTHONPATH:这是Python导入模块时的核心搜索路径。第一个终端大概率临时将当前工作目录(/Users/me/Documents/workspace-vsc/Pipeline/src/python)加入了该变量,新建标签页时shell重新加载配置,没有继承这个临时修改,导致第二个终端的Python找不到同目录下的MakeInfo模块。
验证方法:分别在两个终端执行echo $PYTHONPATH和python -c "import sys; print('\n'.join(sys.path))"对比输出即可确认。- conda 相关环境变量(
CONDA_PREFIX、CONDA_DEFAULT_ENV):即便两个终端的pytest执行路径完全一致,仍需确认实际激活的 conda 环境是否相同,部分场景下 shell 配置加载异常会导致环境激活状态不一致,对应环境下的本地包注册情况不同也会触发导入错误。
验证方法:分别在两个终端执行conda info --envs查看当前激活环境的标记是否一致。 PYTHONNOUSERSITE:如果该变量在第二个终端被设置为非空值,Python会跳过加载用户本地 site-packages 目录,如果你此前通过pip install --user的方式注册过本地项目模块,也会出现找不到模块的问题。- shell 初始化配置差异:如果终端新建标签页默认启动的是「非登录shell」,而第一个终端是「登录shell」,二者加载的配置文件(如
.bash_profile、.bashrc、.zshrc等)不同,也会导致最终环境变量状态不一致,可检查两类shell的初始化配置中是否有修改Python相关路径的逻辑。
内容的提问来源于stack exchange,提问作者Greg Dougherty
相关产品推荐
相关产品推荐

