Python 虚拟环境入门:包已安装,为何仍然导入失败?

举报
yd_263910519 发表于 2026/10/24 13:49:56 2026/10/24
【摘要】 用一个 Python venv 小练习,串起环境创建、装包、解释器路径验证和依赖记录,排查“安装成功却无法导入”的常见原因,并给出 Linux 与 Windows 命令。

“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》指南。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。