激活Python venv虚拟环境后py启动器报ModuleNotFoundError问题
py启动器在激活venv后运行脚本出现ModuleNotFoundError的原因
以下是几种可能导致该问题的原因:
1. 脚本开头的Shebang行覆盖venv优先级
py启动器会优先读取脚本开头的#!(shebang)指令选择Python版本。如果你的脚本包含类似#!python3.12或#!/usr/bin/env python3的行,py启动器会直接匹配对应版本的系统Python,而非当前激活的venv中的Python——哪怕py -0p显示venv的Python优先级最高。
比如,若系统和venv均为Python3.12版本,py启动器会优先调用系统路径下的Python3.12,而非venv中的,导致无法找到venv site-packages下的模块。
2. 脚本所在目录存在版本控制文件
py启动器会检测脚本所在目录(及父目录)的.python-version或pyproject.toml文件,若这些文件指定了特定Python版本,会覆盖当前shell激活的venv设置,调用对应版本的系统Python,跳过venv环境。
3. py启动器的进程环境继承问题
虽然py -0p能识别到PATH中的venv Python,但运行脚本时,py启动器可能未完全继承当前shell的环境变量(如VIRTUAL_ENV)。这种情况下,即使调用了venv的Python,也可能因缺少环境变量标识导致site-packages路径未正确加载(不过你提到py -c的sys.path正常,这种可能性较低)。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

