关于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


猜你喜欢
- 方法一先按esc进入命令模式,即左侧线为蓝色(为绿色时是编辑模式),按z键即可恢复方法二如果是运行过的代码直接运行history方法三功能栏
- 前言当我们需要对列表(list)、元组(tuple)、字典(dictionary)和集合(set)的元素进行遍历时,其实Python内部都是
- 一、准备阶段 获取私钥官方文档 https://kf.qq.com/faq/161222N...获取私钥证书的序列号 https:
- 第一种方案: 使用递归算法,也是使用频率最多的,大部分开源程序也是这么处理,不过一般都只用到四级分类。这种算法的数据库结构设计最为简单。ca
- 本文实例讲述了微信公众平台实现获取用户OpenID的方法。分享给大家供大家参考。具体分析如下:用户点击微信自定义菜单view类型按钮后,微信
- 很久都没写 Flask 代码相关了,想想也真是惭愧,然并卵,这次还是不写 Flask 相关,不服你来打我啊(就这么贱,有本事咬我啊这次我来写
- 将pandas.DataFrame,pandas.Series的索引设置为datetime64 [ns]类型时,将其视为DatetimeIn
- 今天,在在使用 pycharm 的使用,进行创建 python的时候,发现使用默认的创建的选项使用的python 3环境 。而我系统默认的p
- TCP客户端程序开发1. 开发 TCP 客户端程序开发步骤回顾创建客户端套接字对象和服务端套接字建立连接发送数据接收数据关闭客户端套接字2.
- 如何用JAVASCRIPT格式化数字成货币那种表示法?,比如说 34585962.00显示 为 34,585,962.00<scrip
- 出于工作需要,学习了GAN,原理这块就不多讲了,主要讲怎么训练自己的数据生成新的图片,因为博客上大多是生成MNIST数据集,生成自己的图片时
- 前面章节我们学些了文件对象的创建、写入与读取,并且针对 .py 文件 与 .txt 文件进行了有针对性的小练习。 通过前面的学习我们知道,文
- 我就废话不多说了,大家还是直接看代码吧!import socketimport sysimport timeimport structHOS
- 死锁对于DBA或是数据库开发人员而言并不陌生,它的引发多种多样,一般而言,数据库应用的开发者在设计时都会有一定的考量进而尽量避免死锁的产生.
- 取余函数 PHP取余函数 PHP两个取余 MOD(x,y) x%yMOD例如:9/3,9是被除数,3为除数.mod函数是一个求余函数,其格式
- zipfile模块是python中一个处理压缩文件的模块,解决了不少我们平常需要处理压缩文件的需求。大家还知道Python zipfile
- 这篇文章我们来讲讲如何在python使用bs4模块返回值中正确使用find和find_all来取值。我们先来看看find函数在两种场景使用:
- 本文实例为大家分享了python+tkinter实现学生管理系统的具体代码,供大家参考,具体内容如下 from tkinter i
- 本文实例演示了Python生成pdf文件的方法,是比较实用的功能,主要包含2个文件。具体实现方法如下:pdf.py文件如下:#!/usr/b
- Python 格式化输出字符串(输出字符串+数字的几种方法)1. 介绍字符串格式化输出是python非常重要的基础语法。格式化输出:内容按照