You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VENV内pip freeze显示已装numpy 运行代码报ModuleNotFoundError

问题根本原因

这个矛盾现象的核心原因非常简单:你运行Python交互环境时调用的解释器,和跑脚本时用的解释器根本不是同一个。
你在激活venv的命令行输python进交互模式时,调用的是虚拟环境目录下的python.exe,这个解释器能正常读取venv里装的numpy,所以导入没问题;但你跑脚本的时候,系统或者编辑器调用了别的位置的Python——绝大多数情况是全局安装的Python,或是其他虚拟环境的解释器,这些解释器的包目录里根本没装numpy,自然会报找不到模块的错。
从你贴的路径还能看到一个容易踩的坑:你的项目里同时存在大小写命名不同的两个文件夹(大写开头的TouristRoutingProblem和全小写的touristroutingproblem),不管是重建venv还是选解释器的时候都容易选错路径,很容易放大这个问题。

分步修复方案

按优先级从高到低挨个试,基本能覆盖所有这类场景:

  • 首先修正脚本运行方式:不要直接双击.py文件运行脚本,Windows下双击py文件默认调用系统全局关联的Python解释器,不会走你激活的虚拟环境。激活venv后,在当前命令行窗口中,先切到脚本所在目录,再执行python TouristRoutingProblem.py运行。可以先在激活的命令行里执行where python,确认输出的第一个路径是你的venv目录下的Scripts\python.exe(比如你当前环境对应的路径应该是C:\Users\User\Desktop\TouristRoutingProblem\touristroutingproblem\my_env\Scripts\python.exe),如果第一个路径是全局Python的安装路径,说明虚拟环境激活未生效。
  • 如果你是通过VS Code、PyCharm等代码编辑器运行脚本,手动指定项目的Python解释器为当前venv的解释器:
    • VS Code:按Ctrl+Shift+P调出命令面板,搜索Python: Select Interpreter,在列表中选择指向my_env下Scripts/python.exe的选项,选择完成后重启内置终端再运行脚本。
    • PyCharm:打开Settings > Project > Python Interpreter,点击右上角齿轮图标选择Add,选择Existing environment,浏览选中my_env目录下的python.exe,确认后设置为当前项目的默认解释器即可。
  • 排查文件名冲突:打开你存放脚本的00 classes目录,检查有没有自己创建的名为numpy.py的文件,或是名为numpy的文件夹,Python导入包时会优先读取当前工作目录下的同名文件/文件夹,如果存在这类命名,会覆盖官方numpy包的导入逻辑,重命名这类自定义文件/文件夹即可解决。
  • 终极验证方案:不依赖虚拟环境激活的环境变量,直接用venv下python.exe的绝对路径运行脚本,示例命令如下:
C:\Users\User\Desktop\TouristRoutingProblem\touristroutingproblem\my_env\Scripts\python.exe "c:\Users\User\Desktop\TouristRoutingProblem\TouristRoutingProblem\00 classes\TouristRoutingProblem.py"

这种方式强制指定使用虚拟环境内的解释器运行,只要numpy确实安装在该venv中,就不会出现模块找不到的错误。

内容的提问来源于stack exchange,提问作者Peek0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 22:03:33