python之ImportError:模块引入异常问题
作者:Imobs
摘要
为什么要写这篇文章?
我们在使用 pycharm 编程经常会遇到 ImportError:模块引入异常的情况;
原因:
模块文件不在运行的路径上,即PyCharm IDE支持文件跳转,但是当文件执行时,找不到模块。
就会抛出 ImportError;
解决方法
Step1:使用 sys.path.append 引入源路径
如果是在 Terminal 执行,通过 sys.path.append 添加源路径
在模块文件顶部,引入源目录,源路径下的所有模块文件都可以被不加前缀直接import
import os import sys BASE_PATH = os.path.split(os.path.dirname(os.path.abspath(__file__)))[0] if BASE_PATH not in sys.path: sys.path.append(BASE_PATH) # print(BASE_PATH) # 打印源路径
Step2:Pycharm IDE - Sources Root
如果使用 Pycharm IDE ,模块包下有多层目录,直接执行,可能就会抛出引入路径错误
(1)在pycharm中设置source路径
File–>setting–>project:项目名–>project structure
将放package的文件夹设置为source,这样import的模块类等,就是通过这些source文件夹作为根路径来查找,也就是在这些source文件夹中查找import的东西。
(2)清除缓存并重启
(3)设置源目录(注意设置的是哪个目录,不能选择项目根目录)
package 右键 -> Mark Directory as -> Sources Root
Step 3:unresolved reference
导入第三方模块时,比如:
from flask import Flask
此时的Flask 下方是有红色波浪线(如下图)的,我这里确定已经安装完毕,且 ctrl + 左键也无法跳转到声明定义的源码,虽然运行是不会报错的,但是在使用的是不会提示相关的关键方法
这个问题困扰了我很久,查了很多资料,最终找到了解决方法;
(1)在pycharm的 settings >> Editor >> File Types
(2)选择 Text 并将 File name patterns 列表(识别为文本的文件名/扩展名列表),删除 __init__.py
文件名
(3)删除所有的文件名,发现问题已经解决!
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。