python import模块时有错误红线的原因
作者:啊啊啊啊懒 发布时间:2021-03-19 13:59:30
import模块时有错误红线的解决
前情提要
概念:
在一个文件中代码越长越不容易维护,为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在python中,一个py文件就称之为一个模块(Module)
好处:
1、最大的好处是提高了代码的可维护性
2、编写代码不必从零开始。当一个模块编写完毕,就可以在其他地方调用
分类:
1、python’标准库 2、第三方模块 3、应用程序自定义
使用软件为pycharm。在python项目执行的时候,会出现导入模块错误(代码上表示出红色曲线)
原因及解决办法
1、常见的为本模块没有安装,所以要去网上搜索该模块的安装方法。(很多可以通过pip解决)
2、若该模块为自己编写,则需看他是否跟执行文件是否在一个文件夹下。
例1:
bin.py是执行文件,想在bin.py中导入cal.py运行它中的run()函数。
如果只写import会报错,因为两个文件存在于两个文件夹中
所以这种情况在导入模块的时候要写成from 文件夹名 import 文件名
即from module1 import cal
例2:
bin.py是执行文件,想在bin.py中导入main.py,在main中再导入cal.py运行cal.py的run()函数。简单点说就是在1中调用2在从2中调用3
这时,bin中的代码是:
注:这样导入的是正确的,但是有的时候pycharm也会给它标红线如下图。直接执行就好不用管(除非你导入本身有问题)
from module1 import main
main.run()
main中的代码是:
import cal
def run():
print(cal.add(3,7))
print('这里是main')
cal中的代码是:
def add(a,b):
print('这里是cal,%d+%d=%d'%(a,b,a+b))
注意:
这样执行是有错误的:
Traceback (most recent call last):
File "E:/python_workspace/test/bin.py", line 1, in <module>
from module1 import main
File "E:\python_workspace\test\module1\main.py", line 1, in <module>
import cal
ModuleNotFoundError: No module named 'cal'
这时,我们要格外注意,在main中导入cal模块时写的是import cal。这样是错误的。
原因及解决:
我们的执行文件是bin那么在执行的的时候所有的导入路径都是基于执行文件的。所以尽管bin和main在同一文件夹下,依然要写成from module import cal。(改完你会发现以下现象,不用管,这是软件问题,保证导入路径没错就可以执行)
import红线但是能运行
解决方法
包右键-Mark Directory as-Sources Root
来源:https://blog.csdn.net/weixin_44017891/article/details/104750752
猜你喜欢
- 主要记录Python-OpenCV中的VideoCapture类的使用;官方文档;VideoCapture()是用于从视频文件、图片序列、摄
- 这两天为了这个问题, Gitter 上问, Twitter 上问, GitHub 上问, 两天没反应原来写博客的 jlongster 不理我
- axios 简介axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征:从浏览器中创建
- 简介Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。casbin 的主要特性包括:支持自定义请求的格式
- 每个熟悉python的人都知道,python提供给了我们各种各样原生的数据结构,如list、tuple、set、dict等等。这些形形色色的
- 1. mmap内存映射文件建立一个文件的内存映射将使用操作系统虚拟内存来直接访问文件系统上的数据,而不是使用常规的I/O函数访问数据。内存映
- 一、前言:mysql8之后想比起之前常用的版本改动还是挺大的,因为刚从安装接触,就先从基本的说起。现在的mysql8安装只能采用解压配置版,
- 前言在前几年,如果你和嵌入式开发人员推荐Python,大概会是这样一种场景:A:”诶,老王,你看Python开发这么方便
- 前提条件1.了解Python语言,并会安装第三方库2.了解Python Web Flask框架3.了解PyTorch深度学习框架实验环境Py
- 协程中未处理的异常会向上冒泡,传给 next 函数或 send 方法的调用方(即触发协程的对 象)。下面示例举例说明如何使用之前博客示例中由
- xorm用于在golang中链接数据库,并完成增删改差操作,不管是orm还是raw方式都十分的新颖简单。sql语句postgresql pg
- 先来说说实现方式: 1、我们来假定Table中有一个已经建立了索引的主键字段ID(整数型),我们将按照这个字段来取数据进行分页。 2、页的大
- 看这个模块要先看with as的用法,最常用的方法就是打开一个文件:with open(“filename”) as f:f.read()w
- 故障现象 Oracle Database 11g 数据库普通用户登录时提示 ORA-28002: the password will exp
- transforms按住Ctrl查看transforms的源码可以知道,transforms就是一个python文件,里面定义了很多类,每一
- 在用python的bottle框架开发时,前端使用ajax跨域访问时,js代码老是进入不了success,而是进入了error,而返回的状态
- 前言;python由于它动态解释性语言的特性,跑起代码来相比java、c++要慢很多,尤其在做科学计算的时候,十亿百亿级别的运算,让pyth
- 很早前就遇到这个空值的属性,它既出现在 html 文档中,也出现在 xml 中,一直都回避,放之任之,反正也不影响文档的正确性。隐隐约约过了
- 继续pygame实现俄罗斯方块游戏(AI篇1)的代码更新一、消除后才做评价上一篇我们是对方块落下的位置和落下后出来的空洞进行了评价,但是这些
- python模块导入细节本文主要介绍了关于python模块导入的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧官方