解决Python中导入自己写的类,被划红线,但不影响执行的问题
1. 错误描述
之前在学习Python的过程中,导入自己写的包文件时,与之相关的方法等都会被划红线,但并不影响代码执行,如图:
看着红线确实有点强迫症,并且在这个过程当时,当使用该文件里的方法时不会自动提示方法名,只能靠手全部输入,这种容易造成手误,对于小白特别容易降低编写效率
2. 原因分析
pycharm中,source root概念非常重要,当你在代码中写相对路径的时候,就是以source root为起点进行查询。
而pycharm中,当前的项目文件夹 是默认的source root,当你使用import语句导入模块时,Pycharm默认在project folder中寻找;
所以当你在project folder下的某个subfolder导入某个同样定义在这个subfolder中的模块时,会出现导入错误。
3. 解决方案
问题已经找到了,pycharm不会将当前文件目录自动加入自己的sourse_path。所以我们要告诉pycharm就行了。下面有两种方法(3.1和3.2),都能比较方便的解决问题:
3.1 加一个“点”
第一种方法非常简单,只需要在models前加一个点。表示,告诉pycharm我要引用的模块位于同级目录。
例如:
from models import className
修改为:
from .models import className
就可以不报错了
3.2 添加“当前目录”
第二种方法:
既然,pycharm不会将当前文件目录自动加入自己的sourse_path。那么我们就手动告诉他。
右键目录名 点击make_directory as --> sources path 将当前工作的文件夹加入source_path就可以了。步骤如下图:
以上这篇解决Python中导入自己写的类,被划红线,但不影响执行的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Python导入模块时遇到的错误分析
当遇到无法导入某个python模块时,可能会是没有安装某个模块,也有可能是某模块在加载过程中失败,也有可能是陷入了循环导入的问题.本文详细解释了这个问题. 1. 模块未安装或者路径不对 ImportError: No mudule named myModule 有两种可能,一是该模块没有安装,一般可以用 pip install %module_name% 来解决.注意有时候模块安装包名并不等于要导入的模块名.这种情况下可以通过pip search | list命令来尝试找到正确的包. 另一种情况
-
Python3导入自定义模块的三种方法详解
前话 最近跟着廖雪峰的教程学到 模块 这一节.关于如何自定义一个模块,如果大家不懂的话先来看看基本的介绍: 模块 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Module). 使用模块有什么好处? 最大的好处是大大提高了代码的可维护性.其次,编写代码不必从零
-
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
有时候导入本地模块或者py文件时,下方会出现红色的波浪线,但不影响程序的正常运行,但是在查看源函数文件时,会出现问题 问题如下: 解决方案: 1. 进入设置,找到Console下的Python Console,勾选选项"Add source roots to PYTHONPAT" 2. 在当前项目程序目录右键单击,然后"Mark Directory as"为"Sources Root".之后当前程序所在目录颜色会变化,表示已经完成标记. 3. 之
-
Python使用import导入本地脚本及导入模块的技巧总结
本文实例讲述了Python使用import导入本地脚本及导入模块的技巧.分享给大家供大家参考,具体如下: 导入本地脚本 import 如果你要导入的 Python 脚本与当前脚本位于同一个目录下,只需输入 import,然后是文件名,无需扩展名 .py. 伪代码如下: import useful_functions useful_functions.add_five([1, 2, 3, 4]) 我们可以为导入模块添加别名,以使用不同的名称引用它. import useful_functions
-
解决Python中导入自己写的类,被划红线,但不影响执行的问题
1. 错误描述 之前在学习Python的过程中,导入自己写的包文件时,与之相关的方法等都会被划红线,但并不影响代码执行,如图: 看着红线确实有点强迫症,并且在这个过程当时,当使用该文件里的方法时不会自动提示方法名,只能靠手全部输入,这种容易造成手误,对于小白特别容易降低编写效率 2. 原因分析 pycharm中,source root概念非常重要,当你在代码中写相对路径的时候,就是以source root为起点进行查询. 而pycharm中,当前的项目文件夹 是默认的source root,当你
-
解决python中导入win32com.client出错的问题
准备写一个操作Excel脚本却在导入包的时候出现了一个小问题 导入包 from Tkinter import Tk from time import sleep, ctime from tkMessageBox import showwarning from urllib import urlopen import win32com.client as win32 报错提示 Traceback (most recent call last): File "estock.pyw", li
-
解决pycharm中导入自己写的.py函数出错问题
如图,今天跑代码的事后遇到的问题,pycharm导入我自己写的各种函数.py文件时有红色标注,显示"no moudle balabala-" 可以看到,右侧自己写的函数是存在的. 解决办法 方便起见,直接在文件所在的目录(如上目录为 jihe )上进行操作! 如图,右键点击根目录-->Mark Directory as-->Sources Root.就大功告成了. 这样报错就解除了. 除非你导入函数时将函数名写错了(以前的坑).... 以上这篇解决pycharm中导入自己写
-
python中导入 train_test_split提示错误的解决
如下所示: 原因: 在python3.6中sklearn已弃用train_test_split,导致导入报错 解决方式,用model_selection模块导入: from sklearn.model_selection import train_test_split 经测试,在python2中也是使用该方式导入train_test_split模块 补充知识:from sklearn.model_selection import train_test_split找不到模块 解决方案: pip u
-
解决Python中回文数和质数的问题
一.前言 今天学习视频时课后作业是找出1000以内既是素数又是回文数的数,写代码这个很容易,结果一运行遇到了bug,输出结果跟预期不一样,调试了快30min,再接着一通搜索和回看视频才发现问题所在.所以特地写下来,方便以后查看.问题的关键是判断素数过程中for-else的用法上(具体看后面代码) 二.实现判断素数的功能 质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个因数的数).via--Wikiped
-
如何在Python中导入EXCEL数据
目录 一.前期准备 二.编写代码基本思路 三.编写代码读取数据 3.1 3.2 四.结语 一.前期准备 此篇使用两种导入excel数据的方式,形式上有差别,但两者的根本方法实际上是一样的. 首先需要安装两个模块,一个是pandas,另一个是xlrd. 在顶部菜单栏中点击文件,再点击设置,然后在设置中找到以下界面,并点击“+”号. 然后会出现以下界面,在搜索框中分别搜索以上两个模块:pandas/xlrd. 选中搜索出来的模块,并点击左下角的的安装按钮,便可将模块安装到自己电脑中. 需要注意的是,
-
Python中导入模块的几种方式总结
目录 Part.I 预备知识 Chap.I 几个概念的区分 Chap.II 模块中的 all 变量 Part.II 导入模块的几种方法 Chap.I 方法 Chap.II 实例 补充:python导入自己的模块 总结 Part.I 预备知识 Chap.I 几个概念的区分 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和 Python 语句. Python 包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成
-
解决Python中定时任务线程无法自动退出的问题
python的线程有一个类叫Timer可以,用来创建定时任务,但是它的问题是只能运行一次,如果要重复执行,则只能在任务中再调用一次timer,但这样就存在新的问题了,就是在主进程退出后,不能正常退出子线程. from threading import Timer def scheduletaskwrap(): pritn "in task" Timer(10, scheduletaskwrap).start() Timer(10, scheduletaskwrap).start() 象
-
解决python中使用PYQT时中文乱码问题
如题,解决Python中用PyQt时中文乱码问题的解决方法: 在中文字符串前面加上u,如u'你好,世界',其他网上的方法没有多去探究,Python的版本也会影响解决方法,故这里只推荐这种. (有人说用toLocal8bit函数也可以,我试了下,貌似不行)请看例子: #coding=utf-8 from PyQt4 import QtGui, QtCore s = QtCore.QString(u'你好(hello)世界(world)') t = s.toLocal8Bit() u = unico
-
解决python中无法自动补全代码的问题
自已理解自我总结出来的方法,供自己以后使用 #coding:utf-8 from cv2 import * #这里表示让cv2的智能提示功能可用,但是这句话却没有导入cv2模块,不知道什么原因 import tensorflow as tf import tensorflow.contrib as contrib #这句话表示让contrib的代码自动补全功能可用,不知道为啥,比如输入contrib.等一会后面就会自动提示出现很多方法,但是输入tensorflow.contrib.却没有任何反应
随机推荐
- ERROR 1222 (21000): The used SELECT statements have a different number of columns
- IBM DB2 日常维护汇总(六)
- 迅闪2007性能改进总结
- 批处理实现计算器功能代码(小结)
- python实现通过代理服务器访问远程url的方法
- js形成页面的一种遮罩效果实例代码
- ASP.NET Session的七点认识小结
- jsp中点击图片弹出文件上传界面及实现预览实例详解
- Android编程实现播放视频时切换全屏并隐藏状态栏的方法
- js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
- MySQL关于字符串中数字排序的问题分析
- jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
- Javascript C#真正可以交互的DES加解密代码
- MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
- java使用POI批量导入excel数据的方法
- Android自定义控件实现滑动开关效果
- 简介Java的Spring框架的体系结构以及安装配置
- Angular2+如何去除url中的#号详解
- Java多线程 中断机制及实例详解
- 详解通过docker和docker-compose实现eureka高可用