关于Python包导入报错的问题总结
作者:大大毛丶aj 发布时间:2021-02-05 18:13:46
Python包导入报错的问题
首先,一般来说,写一个小demo可能一个文件就够了,但是要是做一个小项目,可能需要拆分成很多零散的文件,放在不同的文件夹里面调用,这个就称之为模块(包)
Python的导包是一件令人头疼的事情,当文件多了之后,同样的导入方式可能在不同的场合遇到解释器抛出异常。
错误记录
1. ModuleNotFoundError: No module named ‘public’
ModuleNotFoundError:没有名为“public”的模块
模块间的引用:
错误的
正确的方式:
但是如果在里面运行代码,将会收到
2. ImportError: attempted relative import with no known parent package
ImportError:尝试在没有已知父包的情况下进行相对导入
(适合相邻文件的导入)
如果真想用里面的方法做测试,尝试
from public import print_date
or
import public
同样使用此也会抛出ImportError
异常 from utils.public import print_date
->
ModuleNotFoundError: No module named 'utils'
但是如果在包外调用包内的方法,又会报错
这里又需要把
from public import print_date
改回
from .public import print_date
其中 import .public
是不支持的,编辑器也会智能显示错误波浪线
导入之前捕获异常 ImportError
3. ImportError: attempted relative import beyond top-level package
ImportError:尝试相对导入超出顶级包 (包内导包外) - 需要在这个层级之上再建立一个文件夹来管理,把现有的文件夹当作子文件夹管理
······
目录结构(部分文件内容被删掉了):
关于 __init__.py
文件的作用,当在包外面使用 from xxx imprt *
这中方式导入时,会导入 __all__ = ['app']
里面的,如果没有,就不能像下面一样使用
正常是
# from utils import *
from utils import app
def putfile():
print('test putfile')
if __name__ == '__main__':
app.main_run()
很明显,这样不行
4. ImportError: cannot import name ‘print_date’ from partially initialized module ‘utils.public’ (most likely due to a circular import) (D:\xxx\xxx\public.py)
ImportError:无法从部分初始化的模块“utils.public”导入名称“print_date”(很可能是由于循环导入)(D:\xxx\xxx\public.py)
这种情况把真正不依赖当前项目本身(公有变量等)的方法,再提取出来写到一个文件里面
来源:https://blog.csdn.net/qq_34580627/article/details/125234401
猜你喜欢
- 现在我将清除页面缓存的一些方法总结如下:1、在Asp页面首部加入<% Response.Buffer = True
- 实例如下:# -*- coding: utf-8 -*-"""Spyder EditorThis tempor
- 解决安装Office2003 SP2后不能打开Access的问题手动更改注册表要解决此问题, 手动更改计算机上注册表位置启动 Access
- 片头语:因为工作需要,在CentOS上搭建环境MySQL+Python+MySQLdb,个人比较习惯使用Windows系统的操作习惯,对纯字
- 1、说明Python实现异步IO非常简单,asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持。asyncio的
- 用XMlhttp生成html页面,相关函数如下:<% ’定义xmlhttp function Get
- 本文实例为大家分享了python实现自动打卡小程序的具体代码,供大家参考,具体内容如下"""湖南大学疫情防控每
- 原文地址:30 Days of Mootools 1.2 Tutorials - Day 2 - Selectors如果你还没有准备好,请先
- 第一种import win32clipboardimport time#速度快 容易出错class niubi(): def l
- 经常在网站上看到诸如www.abc.com/?news或者www.abc.com/?id=123这样的网址,一开始觉得很神秘,其实现在看多了
- 引言我们经常听到"因为GIL的存在,python的多线程不能利用多核CPU",现在我们暂且不提GIL,python能不能
- 如果用户查询时,使用Order BY排序语句指定按员工编号来排序,那么排序后产生的所有记录就是临时数据。对于这些临时数据,Oracle数据库
- 1、800*600下,网页宽度保持在778以内,就不会出现水平滚动条,高度则视版面和内容决定。2、1024*768下,网页宽度保持在1002
- 新下载了一个Pycharm,建了个小demo,期间产生了一个sqlite3文件,由于是第一次打开,就弹出选择打开方式的对话框,手一块直接点了
- 本文实例为大家分享了python感知机实现的具体代码,供大家参考,具体内容如下一、实现例子李航《统计学方法》p29 例2.1正例:x1=(3
- Linux环境MySQL服务器级优化讲解 摘要:本节简单介绍了如何在服务器级优化数据库的性能
- 我认为在ASP中最好的办法是用编程实现定时刷新Cache,也就是说给Application中储存的设一个过期时间。当然,在ASP中Appli
- 1,FCKeditor 编辑器最新版本: 2.3.1站点:http://www.fckeditor.net 演示:http://w
- 简单生成器有许多优点。生成器除了能够用更自然的方法表达一类问题的流程之外,还极大地改善了许多效率不足之处。在 Python 中,
- 什么是词干提取?在语言形态学和信息检索里,词干提取是去除词缀得到词根的过程─—得到单词最一般的写法。对于一个词的形态词根,词干并不需要完全相