当前位置: 首页 > 编程笔记 >

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

薛阳荣
2023-03-14
本文向大家介绍解决Python中导入自己写的类,被划红线,但不影响执行的问题,包括了解决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中导入自己写的类,被划红线,但不影响执行的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 我目前在Java的编程课上学习多线程。根据我的理解,不同线程的执行顺序是无法预测的,因此确保我们实现机制以确保所有东西都按所需的顺序执行是很重要的。 我学到的机制之一是使用,它强制一个线程等待,直到其他线程完成执行。然而,下面的示例代码实际上让我更加困惑: 这段代码应该演示是如何工作的,它将执行,然后得到一个正确打印的。 然而,当我实际运行代码时,执行的顺序似乎仍然是随机的。我得到的结果是 那么,

  • 为什么这样写入的csv是有换行的 但是我打印原文是没有的 如何吧换行符去掉? 希望可以有大佬帮忙解决

  • 关于rust导入函数的问题,我的工程格式如下: src/main.rs src/api/api.rs api.rs 里有一个函数: pub async fn root() {} 问题是:我该如何在main.rs下调用这个root,我试过各种文档上的方法都不行。求助各位 知道怎么导入

  • 本文向大家介绍解决Python pandas df 写入excel 出现的问题,包括了解决Python pandas df 写入excel 出现的问题的使用技巧和注意事项,需要的朋友参考一下 学习Python数据分析挖掘实战一书时,在数据预处理阶段,有一节要使用拉格朗日插值法对缺失值补充,代码如下: 1.import xlwt 错误 这个问题比较简单,只需要在官网上下载安装或者直接在编译器中运行如

  • 本文向大家介绍解决python Jupyter不能导入外部包问题,包括了解决python Jupyter不能导入外部包问题的使用技巧和注意事项,需要的朋友参考一下 在网上看了很多解决方法,都没有解决,后来我自己解决了这个问题: 出现的问题:在cmd上 “pip install package” 时显示 satisfied,但在Jupyter中 import package 报错“No module

  • 我是Java开发新手,不熟悉各种导入(Maven、Git等),所以我简单地说: 这两个没有在代码中解决我正在检查,我不知道我应该采取什么样的行动,也不知道我应该导入什么来解决它,但它可能是一些流行的库。 是否有完整的指南指导开发人员如何在eclipse中导入包(例如,C#开发人员使用Nuget,尽管有大量手工制作的包),或者他们真的使用所有这些巨大的导入选择器?