Python from import导包ModuleNotFoundError No module named,找不到模块问题

这篇具有很好参考价值的文章主要介绍了Python from import导包ModuleNotFoundError No module named,找不到模块问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。



在学习Flask框架的蓝图时,遇到导包时用到了`from . 模块 import 对象`,然后试了试直接 import会报错,直接告诉我找不到模块,发现问题以此记录。

场景

有一个flask框架的项目,目录结构如下:

有一个主包pro_flask,然后下面有两个子包admin和web,还有和pro_flask同级的启动文件

Python from import导包ModuleNotFoundError No module named,找不到模块问题

我在与admin和web同级的__init__.py文件中,导入admin和web里的一些资源。

代码如下:

在导入admin和web中的资源时,告诉我ModuleNotFoundError: No module named 'admin'

from flask import Flask

# 以下 import的admin和web,是admin和web包下__init__.py中定义的对象
from admin import admin		# 项目启动后,这里会报错
from web import web		# 项目启动后,这里会报错

admin包下的__init__.py文件

from flask import Blueprint

admin = Blueprint(				# 需要在其他模块中导入这个 admin 蓝图对象
    'admin',
    __name__,
    template_folder='templates',
    static_folder='static'
)
from . import views

web包下的__init__.py文件

from flask import Blueprint

web = Blueprint(				# 需要在其他模块中导入这个 web 蓝图对象
    'web',
    __name__,
    template_folder='templates',
    static_folder='static'
)
from . import views

了解下import和from …import区别

参考的网上大佬的笔记

import

import tkinter

(1)引用包
import引入的是包中根目录下__init__.py中的全部内容,包括其中的类、类内部的公有属性、类内部的公有方法、方法等内容.(该种方式导入包的本质就是执行__init__.py文件)

(2)引用模块
(该种方式导入模块的本质是将模块解释执行一遍,并赋值给tkinter: module_name = “module_name.py all code”)

===> import module_name —> module_name.py —> module_name.py的位置 —> sys.path(本质是一个列表)

from…import

(1)引用包
(from … import …引入的是在包中根目录下__init__.py和某个文件的内容)但是,我们知道,导入包是没有意义的,最终的目的是导入包下面的模块。(该种方式导入包)

(2)引用模块
(该种方式当如模块的本质是讲module_name.py文件掰开,把想要的部分放入当前文件执行一遍。)

分析

看了网上大佬的分析以及解决方案,自己分析下

一般情况下,python会把一些默认的包目录和用户自定义包所在的目录加载到python的搜索模块的路径集中(sys.path,是一个list列表),然后用户在进行导包时,python会去搜索的模块路径集中去寻找,所导入包的所在目录是否在这个搜索的模块路径集中,如果不存在,那么就会抛出异常找不到模块。

代码分析:启动类中,我们打印一下python搜索的模块路径集

from pro_flask import app

import sys
print(sys.path)

if __name__ == '__main__':
    app.run()
-------------------------------------------------------
['D:\\environment\\python-workspace\\flaskProject', 'D:\\environment\\python\\DLLs', 'D:\\environment\\python\\lib', 'D:\\environment\\python', 'D:\\environment\\python-workspace\\flaskProject\\venv', ........]

注意列表中这个'D:\\environment\\python-workspace\\flaskProject',就是上面截图中项目所在的路径。

结论:也就是说,这个项目所在目录被加载到了python的搜索模块路径集中,所有导入包的操作都必须要从项目的目录开始找,否则就会出问题

解决方案

方案一(绝对路径)

导入模块时,从项目的根目录找起

from flask import Flask

from pro_flask.admin import admin	# 从项目根目录下找起就可以
from pro_flask.web import web

方案二(相对路径, 推荐)

导入时,使用 . 表示从当前文件所在目录找

from flask import Flask

from . admin import admin	# 从当前文件所在目录下开始找
from . web import web

同理,如果从上级目录开始找,那么可以用

from .. xxx import xxx

参考

参考自文章来源地址https://www.toymoban.com/news/detail-410956.html

import和from … import区别文章

sys.path文章


到了这里,关于Python from import导包ModuleNotFoundError No module named,找不到模块问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于Python 3.10在使用百度飞桨 NLP 时import paddlenlp 报错 ModuleNotFoundError: No module named ‘seqeval‘ 的解决办法

    Python :            3.10.9  (原打算用3.11.1版本,后来发现飞桨最高支持到3.10版本) paddlepaddle:   2.4.1 paddlenlp:         2.4.1 (最新版是2.5.0,由于一直报错,降级到2.4.1) seqeval:            1.2.2 准备学习一下paddlenlp 于是按照官方的说明进行安装,使用官方提供的代码进

    2024年01月22日
    浏览(57)
  • VScode import导入自己的模块文件路径错误ModuleNotFoundError: No module named ‘v0‘

    VScode的python报错 ModuleNotFoundError: No module named ‘v0’ 我的工作区文件夹打开的是server,文件相对路径是: server/v0/train_ddpg.py,其中的部分导入import代码如下,v0是上一级文件夹 from v0.cli import cli_train from v0.config import config_dict 不想修改代码,因为需要改的地方太多了,而只通过

    2024年02月04日
    浏览(33)
  • PyCharm控制台输入import torch报错:ModuleNotFoundError: No module named ‘torch‘解决方法

    PyCharm控制台输入import torch报错:ModuleNotFoundError: No module named \\\'torch’解决方法 原因是没有打开pytorch环境 进入Anaconda Prompt界面,输入conda activate pytorch,然后回Pycharm控制台输入import torch就不会报错啦

    2024年02月09日
    浏览(72)
  • 解决pytorch明明已经安装好了但是import时报错ModuleNotFoundError: No module named ‘torch‘

    按照b站一些up主的方法来安装,结果运行时却告诉我:报错ModuleNotFoundError: No module named ‘torch‘ 可是我明明已经装了torch 安装教程参考的是(https://www.bilibili.com/video/BV1o3411V7Zz/?spm_id_from=333.880.my_history.page.clickvd_source=ad813e1004be679f01f964a5bda10dd8) 后来看了一些人的经验,总算没再有

    2024年02月05日
    浏览(50)
  • “from ruamel.yaml import YAMLModuleNotFoundError: No module named ‘ruamel‘”报错,安装ruamel包的解决方法

    问题: 尝试pip install ruamal.yaml,显示Requirement already satisfied: ruamel.yaml in c:usersmacanaconda3libsite-packages (0.15.87),说明已经有了 解决方法:  conda list查看环境的包 发现没有叫ruamal.yaml,只有一个ruamal_yaml 找到软件的路径(报错里有说是在哪个python文件下出错了),打开python文

    2024年02月13日
    浏览(40)
  • ModuleNotFoundError:如何解决 no module named Python 错误?

    当你在一个 Python 文件中导入一个模块时,Python 试图通过几种方式来处理这个模块。有时,Python 会在之后抛出 ModuleNotFoundError。这个错误在 Python 中是什么意思? 顾名思义,当你试图访问或使用一个找不到的模块时就会发生这个错误。以标题为例,找不到“名为 Python 的模块

    2024年01月21日
    浏览(64)
  • Python报错ModuleNotFoundError: No module named ‘psutil‘

    python运行时,因为代码里引入了某些组件库,但是本地没有,便会报错ModuleNotFoundError: No module named \\\'XXX\\\',如下图: 此图是没有导入psutil库。 解决:在python安装目录下的 Scripts 目录下进入cmd黑窗口,运行命令 pip install psutil 安装。 如果是内网连通公网仓库不方便,则通过如下

    2024年02月16日
    浏览(45)
  • Python 报错 ModuleNotFoundError: No module named ‘numpy‘

    1.创建新的工程,编译后提示错误:“ModuleNotFoundError: No module named \\\'numpy\\\'” 2.打开dos窗口,输入:pip list 确认已安装numpy,如下图: 解决方案一:  打开PyCharm软件:File-Settings-Project-Python Interpreter-Add Interpreter-Add Local Interpreter-Virtualenv Enviroment - Inherit global site-packages-OK -   解决方

    2024年02月11日
    浏览(49)
  • Python解决(ModuleNotFoundError: No module named ‘tkinter‘)方法

      确保你使用的Python版本是3.x系列的,因为tkinter库在Python 2.x系列中被称为Tkinter。 尝试手动安装tkinter库。在Windows上,你可以从Python官方网站下载Windows安装程序,并选择安装tkinter库。在Linux上,你可以使用包管理器来安装,例如在Debian/Ubuntu上,可以运行以下命令来安装:s

    2024年02月20日
    浏览(55)
  • 【Python】成功解决ModuleNotFoundError: No module named ‘pandas

    【Python】成功解决ModuleNotFoundError: No module named ‘pandas 🌈 欢迎进入我的个人主页,我是高斯小哥!👈 🎓 博主档案: 广东某985本硕,SCI顶刊一作,深耕 深度学习 多年,熟练掌握PyTorch框架。 🔧 技术专长: 擅长处理各类深度学习任务,包括但不限于图像分类、图像重构(去

    2024年04月15日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包