Python 虚拟环境入门:包已安装,为何仍然导入失败?
“pip 提示安装成功,运行脚本却报 ModuleNotFoundError”,是 Python 入门时很容易遇到的问题。先别反复重装:电脑可能同时存在系统 Python、项目环境和编辑器解释器,装包与运行代码未必使用同一个入口。本文用一个小练习,把环境创建、安装和验证串起来。
一、给项目一个独立环境
venv 为项目建立独立的第三方包目录,默认不继承系统环境的包。它不是虚拟机,也不负责隔离文件访问或网络。下面以已经安装 Python 3 的 Linux、Bash 终端为例,在项目目录执行:
python3 -m venv .venv
source .venv/bin/activate
如果发行版提示缺少 venv 组件,应按该发行版说明安装对应的软件包,再重新创建。环境名可以自定,使用 .venv 只是方便识别;源代码应放在环境目录外。
二、让安装与运行使用同一个 Python
激活后,用当前解释器调用 pip,再检查实际路径:
python -m pip install requests
python -c "import sys; print(sys.executable)"
python -m pip --version
python -c "import requests; print(requests.__file__)"
重点看路径是否指向当前项目的 .venv。第一条输出确认“谁在运行”,第二条确认 pip 所在位置,第三条确认导入的模块来自哪里。只看命令行前面的环境名,不足以证明编辑器也选对了解释器。
若终端能导入、编辑器却报错,应检查编辑器的 Python 解释器设置,并选择该项目环境。还要避免把脚本命名为 requests.py,否则它可能遮住真正的第三方库。
三、不激活,也能明确运行
激活主要是调整当前终端的 PATH。自动化脚本里可以直接指定解释器,减少对终端状态的依赖:
.venv/bin/python -c "import requests; print(requests.__version__)"
Windows PowerShell 可用下面的对应写法,前提是 python 命令已经指向所需的 Python 3:
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install requests
.\.venv\Scripts\python.exe -c "import requests; print(requests.__file__)"
四、记录依赖,重新创建环境
练习完成后,可在激活的 Bash 终端执行:
python -m pip freeze > requirements.txt
deactivate
把 requirements.txt 纳入版本管理,把 .venv/ 加入 .gitignore。换机器时重新创建环境,再用环境内的 Python 执行 -m pip install -r requirements.txt。freeze 记录已安装包及版本,但不能保证跨系统完全复现,仍需记录 Python 版本并验证运行结果。
遇到导入失败,先核对解释器、pip 和模块路径。这三个位置对齐后,再处理依赖版本问题,排查会更有方向。
参考资料:Python 官方 venv 文档;PyPA《Install packages in a virtual environment using pip and venv》指南。
- 点赞
- 收藏
- 关注作者
评论(0)