【ModuleNotFoundError 与 ImportError】之正确使用 Spyder

目录

  • 1 前言
  • 2 为 Spyder 设置 PYTHONPATH 变量
  • 3 正确使用 Spyder
    • 3.1.之前的错误
    • 3.2.对错误的改进
  • 4 总结


1 前言

提示:这里可以添加本文要记录的大概内容:

常常出现这样的错误:同时打开两个不同文件夹下的脚本文件,或者在一个文件夹里调用另一个文件夹下的脚本文件,结果,早上正常运行,下午就报 ModuleNotFoundError 或者 ImportError。通过之前对 sys.path 的学习,我认为主要的原因有两个:一是没有设置 PYTHONPATH 变量,二是当前工作目录一变,导入语句即报错。

【环境】
Win7-64bit
Anaconda (Spyder 4.2.5, Python 3.7.10)
PyCharm 2020.3 (调用 conda 环境)


提示:以下是本篇文章正文内容,下面案例可供参考

2 为 Spyder 设置 PYTHONPATH 变量

  1. 设置步骤:工具(T) ==> PYTHONPATH 管理器 ==> 添加路径 ==> OK
  2. 重要提醒:在设置之前,必须考虑的问题是,真的有必要吗?因为一旦设置,就意味着该路径会出现在 sys.path,且运行每个脚本文件时都会出现。官方文档上的说法是这样的:PYTHONPATH will affect all installed Python versions/environments. 翻译如下:PYTHONPATH 将影响所有已安装的 Python 版本/环境。
  3. 如果真的写了一个在很多程序中都需要的模块文件,不如直接建一个类似 site-package 的目录,专门存放。或者干脆就放在 site-package 目录里。
  4. 看到这一篇博文对整个问题思考了很多,可以参考。
  5. Python 官方文档对 PYTHONPATH 的介绍如下:
    【ModuleNotFoundError 与 ImportError】之正确使用 Spyder_第1张图片

3 正确使用 Spyder

3.1.之前的错误

  1. 由于不了解当前工作目录对 sys.path 的影响,致使导入语句常常报错。其实,未必是导入语句的问题。这些问题在这一段时间集中爆发了,使人近乎崩溃!
  2. 代码比较初级,都是100行之内,所以没有树立创建项目的意识,结果脚本文件零零散散。当时能够正常运行的代码,换了一个时间段就失败了。

3.2.对错误的改进

  1. 创建项目:项目 ==> 新建项目 ==> 项目名称 ==> 位置 ==> 创建

  2. 注意事项:注意代码导入语句的格式及代码运行时的工作目录。我已经注意到这样的事情:同一导入语句在不同的工作目录下也可能不同,有时就会报错。
    【ModuleNotFoundError 与 ImportError】之正确使用 Spyder_第2张图片

  3. 建议多使用 from … import … (as…)

  4. 注意事项:当一个项目创建之后,当前的 PYTHONPATH 变量里自动添加项目路径,且不可删除。直到该项目完成,点击“关闭项目”,则该项目路径会自动退出 PYTHONPATH 变量。随后,若需再次打开该项目,点击“打开项目”,选择项目文件夹即可。这是核心。

  5. 注意事项:若不关闭已经完成的项目,则其他任何脚本的执行都会受其影响,因为该项目路径已添加入 PYTHONPATH 变量,而该变量的影响是全局性质的。

  6. 我觉得应该保留 Spyder ==> Preference ==> 当前工作目录 部分的默认设置:
    【ModuleNotFoundError 与 ImportError】之正确使用 Spyder_第3张图片

  7. 即便设置都正确,当你运行脚本时,也要用先清理所有变量。这一步在 PyCharm 里是默认执行的,但在 Spyder 需针对单个脚本进行如下设置:Ctrl + F6
    【ModuleNotFoundError 与 ImportError】之正确使用 Spyder_第4张图片


4 总结

  1. 最深的感受就是:如果需要常常使用一个工具,了解其运行规则很有必要。
  2. 如果可以浏览外网的话,那么官方文件也很好。值得学习!可惜我看不了。
  3. 注意当前工作目录变化带来的 ModuleNotFoundError & ImportError。
  4. 最佳选择仍然是创建 Project 目录。
  5. 即便创建了 Project 目录,在运行单个脚本时,也要先清除所有变量。
    【ModuleNotFoundError 与 ImportError】之正确使用 Spyder_第5张图片


你可能感兴趣的:(Python,语法,Spyder,ModuleNotFoundE,ImportError,sys.path,PYTHONPATH,KeyError)