您现在的位置是:首页 > 技术教程 正文

解决vscode找不到Python自定义模块,报错No module named ‘xxx‘

admin 阅读: 2024-03-24
后台-插件-广告管理-内容页头部广告(手机)
笔者最近在学习python过程中,把在pycharm运行成功的项目放在vscode中,发现一些报错,比如找不到笔者自定义的模块,参考了一些说法与办法,现将解决方法记录于此。

前言

vscode之所以找不到自定义模块,与其PYTHONPATH有关。笔者的目录结构如图所示:

经过实践,发现如果do_mysql.py与testDatas同级,则上述语句可以引入成功,如果do_mysql.py引入同级do_excel.py:import do_excel,也是可以成功的。

但是导入模块:from testDatas import filePath,报错No module named 'testDatas'

目标:在do_mysql.py中引用filePath.py()

既然引用报错,说明从当前文件结构中找不到testDatas,我们可以导入sys,输出sys.path,查看当前的路径有哪些:

可见这些路径中与笔者项目有关的只有第一个,且为do_mysql.py的目录,所以找不到testDatas。因此,要想引入filePath.py,需要先找到testDatas,所以有以下两种方法:

解决方法

方法一

绝对路径的方式将路径追加到sys.path(“D:\pro\interfaceTest”是笔者的项目路径):

  1. import sys
  2. sys.path.append("D:\pro\interfaceTest")

相对路径的方式将路径追加到sys.path:

  1. import os
  2. import sys
  3. sys.path.append(os.path.join(os.path.dirname(__file__), '../testDatas'))

在当前项目的.vscode(是一个隐藏目录)下的setting.json(如果没有该文件,可自行新增)中添加:

  1. {
  2.     "python.analysis.extraPaths": ["./testDatas"]
  3. }

点击右上角的运行按钮,生效啦!

方法二

方法一虽然可以生效,但是每个文件都要来这么一下,着实烦人,我们可以配置一下模块的路径,方便下一次引入。

首先在.vscode下的launch.json中添加"env": {"PYTHONPATH": "${workspaceRoot}"}:

  1. {
  2. "version": "0.2.0",
  3. "configurations": [
  4. {
  5. // 省略其他
  6. "env": {"PYTHONPATH": "${workspaceRoot}"}
  7. }
  8. ]
  9. }

在.vscode下的settings.json中添加:

  1. {
  2. // 省略其他
  3. "terminal.integrated.env.windows": {
  4. "PYTHONPATH": "${workspaceFolder};${env:PYTHONPATH}"
  5. }
  6. }

保存上述文件,在do_mysql.py中F5一下,发现生效啦!!!但是点击右上角的运行按钮,仍然报错No module named 'testDatas',没关系,只需要重启一下vscode,再次运行,就可以成功啦!

再次验证

此时我们可以输出sys.path看一下:

发现已经将interfaceTest目录加载进来了!

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜