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
猜你喜欢
- 今天我们看看所有的类!由于工作的上的事有点忙!点图!以后讲解这是我编译好了的类的结构图,我们可以用很多软件可以从原板的DLL看到这些内容!当
- 通过web框架搭建一个最简易的程序:第一步:新建一个web框架程序通过CMD进入到想要创建web程序的文件夹数据命令django-admin
- 本文实例讲述了Python3.5内置模块之time与datetime模块用法。分享给大家供大家参考,具体如下:1、模块的分类a、标准库(Py
- 前言本文将教你如何使用YOLOV3对象检测器、OpenCV和Python实现对图像和视频流的检测。用到的文件有yolov3.weights、
- 今天我们用python和pygame实现一个乒乓球的小游戏,或者叫弹珠球游戏。笑脸乒乓球游戏功能介绍乒乓球游戏功能如下:乒乓球从屏幕上方落下
- 好了,看看我们的代码吧:upload.htm' 上传页面<html> <body>&nb
- Cython是属于PYTHON的超集,他首先会将PYTHON代码转化成C语言代码,然后通过c编译器生成可执行文件。优势:资源丰富,适合快速开
- PHP输出JSON格式数据常用框架封装好的方法来输出JSON数据,但是手动去书写的时候却遇到了问题,因为输出的数据类型为字符串类型,导致不能
- 1. 错误描述之前在学习Python的过程中,导入自己写的包文件时,与之相关的方法等都会被划红线,但并不影响代码执行,如图:看着红线确实有点
- 本文实例讲述了Python面向对象程序设计OOP。分享给大家供大家参考,具体如下:类是Python所提供的最有用的的工具之一。合理使用时,类
- pandas读取、写入csv数据非常方便,但是有时希望通过excel画个简单的图表看一下数据质量、变化趋势并保存,这时候csv格式的数据就略
- endswith()方法返回true,如果字符串以指定后缀结尾,否则返回(False可选限制的匹配从给定的索引开始和结束)。语法
- 这个是作者自己封装的一个钉钉机器人的包,目前只支持发文本格式、链接格式、markdown格式的消息,我们可以在很多场景用到这个,比如告警通知
- 【eval()函数】JavaScript有许多小窍门来使编程更加容易。其中之一就是eval()函数,这个函数可以把一个字符串当作一个Java
- Internet Explorer 9 Platform 1.9.7916.6000 Preview 4微软今天公布了IE9 Platfor
- 购物车的设计目标 从程序员的观点来看,购物车是维护购物者商品选购、允许察看、允许修改的一个对象。购物车本身是一个非常简单的程序,但开发者要考
- 创建时间序列函数pd.date_range()根据指定的范围,生成时间序列DatetimeIndex,每隔元素的类型为Timestamp。该
- 可视化图表,有相当多种,但常见的也就下面几种,其他比较复杂一点,大都也是基于如下几种进行组合,变换出来的。对于初学者来说,很容易被这官网上众
- 本文实例为大家分享了python实现简单俄罗斯方块游戏的具体代码,供大家参考,具体内容如下import pygame,sys,random,
- php代码很简单:$server="127.0.0.1";println("Begin");$lin