解决Python中导入自己写的类,被划红线,但不影响执行的问题


Posted in Python onJuly 13, 2020

1. 错误描述

之前在学习Python的过程中,导入自己写的包文件时,与之相关的方法等都会被划红线,但并不影响代码执行,如图:

解决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 相关文章推荐
详解常用查找数据结构及算法(Python实现)
Dec 09 Python
Python2.7下安装Scrapy框架步骤教程
Dec 22 Python
Python基于opencv的图像压缩算法实例分析
May 03 Python
python Web开发你要理解的WSGI & uwsgi详解
Aug 01 Python
python 动态迁移solr数据过程解析
Sep 04 Python
python实现监控阿里云账户余额功能
Dec 16 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
Python使用Selenium实现淘宝抢单的流程分析
Jun 23 Python
Python requests HTTP验证登录实现流程
Nov 05 Python
Python读写Excel表格的方法
Mar 02 Python
一文搞懂Python Sklearn库使用
Aug 23 Python
浅析Python 抽象工厂模式的优缺点
Jul 13 #Python
python正则表达式的懒惰匹配和贪婪匹配说明
Jul 13 #Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
Jul 13 #Python
对python中list的五种查找方法说明
Jul 13 #Python
使用Python项目生成所有依赖包的清单方式
Jul 13 #Python
Python判断远程服务器上Excel文件是否被人打开的方法
Jul 13 #Python
Python依赖包迁移到断网环境操作
Jul 13 #Python
You might like
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
php解析url的三个示例
2014/01/20 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
php实现过滤表单提交中html标签的方法
2014/10/17 PHP
Laravel 5.3 学习笔记之 错误&日志
2016/08/28 PHP
PHP内存缓存功能memcached示例
2016/10/19 PHP
PHP数组与字符串互相转换实例
2020/05/05 PHP
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
js无刷新操作table的行和列
2014/03/27 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
Bootstrap简单表单显示学习笔记
2016/11/15 Javascript
微信小程序学习(4)-系统配置app.json详解
2017/01/12 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
微信小程序如何获取手机验证码
2018/11/04 Javascript
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
JS removeAttribute()方法实现删除元素的某个属性
2021/01/11 Javascript
Python中的集合类型知识讲解
2015/08/19 Python
Django中的CBV和FBV示例介绍
2018/02/25 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
Django REST framework 分页的实现代码
2019/06/19 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
2021/02/22 Python
财务工作个人求职的自我评价
2013/12/19 职场文书
经验丰富大学生村干部自我鉴定
2014/01/22 职场文书
抗洪救灾先进集体事迹材料
2014/05/26 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
springboot+VUE实现登录注册
2021/05/27 Vue.js
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android