VScode import导入自己的模块文件路径错误ModuleNotFoundError: No module named ‘v0‘

这篇具有很好参考价值的文章主要介绍了VScode import导入自己的模块文件路径错误ModuleNotFoundError: No module named ‘v0‘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 问题描述(ubuntu20.04、windows、MacOS均可解决)

VScode的python报错 ModuleNotFoundError: No module named ‘v0’

我的工作区文件夹打开的是server,文件相对路径是:
server/v0/train_ddpg.py,其中的部分导入import代码如下,v0是上一级文件夹

from v0.cli import cli_train
from v0.config import config_dict

不想修改代码,因为需要改的地方太多了,而只通过设置vscode来解决。查了很多资料都没解决。

2. 先上答案

只需在Visual Studio Code的setting.json中添加如下代码

    "terminal.integrated.env.linux": {
        "PYTHONPATH": "${workspaceFolder}${pathSeparator}${env:PYTHONPATH}"
    },
    //在工作区寻找模块(ubuntu、linux系统),MacOS上替换为"terminal.integrated.env.osx",Windows上替换为"terminal.integrated.env.windows"

解释说明(抄自chatGPT):

在 Visual Studio Code 的设置中,"terminal.integrated.env.linux" 允许你为在 Linux 系统下的集成终端设置环境变量。这些环境变量会在你打开一个新的终端实例时被应用。

让我们分析这个特定的设置:

  • "terminal.integrated.env.linux": 指定这些环境变量设置适用于 Linux 系统。

  • "PYTHONPATH": 是一个环境变量,用于 Python 解释器,指定模块查找的额外目录。

  • "${workspaceFolder}": 是一个预定义的变量,它会被替换为当前 VSCode 工作区的路径。

  • "${pathSeparator}": 是一个预定义的变量,它会被替换为操作系统的路径分隔符。在 Linux 系统中,这个分隔符是 :

  • "${env:PYTHONPATH}": 是一个预定义的变量,它会被替换为当前环境中 PYTHONPATH 环境变量的值。如果 PYTHONPATH 未设置,这将是一个空字符串。

整体解释:

这个设置将 PYTHONPATH 环境变量设置为包含当前工作区的路径和原始 PYTHONPATH 的值。这样做的目的通常是为了确保 Python 解释器能够在模块查找路径中找到工作区中的模块和包。

例如,如果你的工作区路径是 /path/to/workspace,并且原始 PYTHONPATH/path/to/some/libs,那么在这个设置下,新的 PYTHONPATH 将被设置为 /path/to/workspace:/path/to/some/libs。这意味着 Python 解释器将首先在 /path/to/workspace 目录中查找模块,然后在 /path/to/some/libs 目录中查找。

3. 其他方法:

1) 在工作区文件 .vscode/launch.json 中configurations 列表中添加"env"

            "env": {
                "PYTHONPATH": "${workspaceFolder}${pathSeparator}${env:PYTHONPATH}"
            }

缺点:运行-启动调试(F5)和以非调试模式运行(ctrl+F5)中可用。但右上角三角形的“运行python文件”和“调试python文件”不可用,因为这俩操作不会考虑 launch.json 中的配置。需将代码的文件夹前缀删掉,即修改为如下才可用,不符合要求:

from cli import cli_train
from config import config_dict

2) “cwd”: “${fileDirname}”

在工作区文件 .vscode/launch.json 中configurations 列表中加入这一行,但我不好用:

"cwd": "${fileDirname}", //这个变量默认设置的是 workspaceFolder,搜的别人说是将它手动改成 fileDirname就可以正常导入模块,记得在上一行末尾加上一个逗号

失败说明(抄自chatGPT):

在 Visual Studio Code 的配置文件中,"cwd": "${fileDirname}" 是一个设置项,用于指定某些操作(例如,运行或调试代码)的当前工作目录(Current Working Directory, cwd)。这里的 ${fileDirname} 是一个预定义的变量,它会被替换为当前打开文件的目录名。

  • "cwd": Current Working Directory 的缩写,指的是进程的当前工作目录。在计算机程序中,这通常是文件系统中的一个目录或文件夹,用作执行文件和操作的默认路径或上下文。

  • "${fileDirname}": 是一个变量,它在运行或调试时会被替换为当前打开文件的目录路径。例如,如果你正在编辑一个位于 /path/to/your/file.py 的文件,${fileDirname} 将被替换为 /path/to/your/

"cwd": "${fileDirname}" 被用在 Visual Studio Code 的配置(例如,在 launch.json 中的调试配置)中时,它告诉 VSCode 在运行或调试代码时使用当前打开文件的目录作为当前工作目录。这对于确保相对路径和模块导入的正确解析非常有用。

例如,如果您在 launch.json 中有以下配置:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}"
        }
    ]
}

这意味着当您调试一个 Python 文件时,VSCode 将使用该文件所在的目录作为当前工作目录,并运行该文件。

3)“code-runner.fileDirectoryAsCwd”

在setting.json中设置 “code-runner.fileDirectoryAsCwd” ,适用于 Code Runner 扩展。但不管是true还是false均无效,与下一条类似

    "code-runner.fileDirectoryAsCwd": false, //true:代码在打开的文件夹下运行;false:始终在打开的工作区根目录下运行。

失败说明(抄自chatGPT):

在 Visual Studio Code 的 Code Runner 扩展中,"code-runner.fileDirectoryAsCwd" 是一个设置项,它决定了代码运行时的工作目录(Current Working Directory, CWD)。

"code-runner.fileDirectoryAsCwd": true
  • 当设置为 true,Code Runner 扩展将使用当前打开文件的目录作为运行代码时的工作目录。

    例如,如果你在 VSCode 中打开并运行了位于 /path/to/your/code.pycode.py 文件,那么代码将在 /path/to/your/ 目录中运行。这意味着所有的文件路径和模块导入都将基于这个目录。

需求和场景:

  • 模块导入:如果你的代码文件需要导入同一目录下的其他模块或文件,将此参数设置为 true 可以确保导入路径正确。

  • 相对文件路径:如果你的代码使用相对路径来读取或写入文件,将此参数设置为 true 可以确保文件操作基于代码文件所在的目录。

  • 多目录项目:在一个包含多个子目录的项目中,如果你希望在每个子目录中分别运行代码文件,将此参数设置为 true 可以确保每个代码文件在其所在目录中运行。

"code-runner.fileDirectoryAsCwd": false
  • 当设置为 false,Code Runner 扩展将使用 VSCode 工作区的根目录作为运行代码时的工作目录。

    例如,如果你的 VSCode 工作区的根目录是 /path/to/workspace/,不论你运行哪个文件,代码总是在 /path/to/workspace/ 目录中运行。这意味着所有的文件路径和模块导入都将基于这个目录。

需求和场景:

  • 单一工作目录:如果你的项目结构简单,所有的代码文件都在一个目录中,或者你希望所有的代码文件都在工作区的根目录中运行,将此参数设置为 false 可以简化文件和模块的路径管理。

  • 全局模块导入:如果你希望从工作区的根目录导入模块,而不是代码文件所在的目录,将此参数设置为 false 可以确保模块导入的一致性。

  • 全局文件操作:如果你希望所有的文件读写操作都基于工作区的根目录,将此参数设置为 false 可以简化文件路径的管理。

总结
这个设置项通常在 settings.json 文件中进行配置,你可以通过在 VSCode 中点击左下角的齿轮图标并选择“设置”来找到它,然后搜索 “Code-runner: File Directory As Cwd” 并选择你想要的值。或者,你可以直接在 settings.json 文件中添加或修改这个设置项。

这个设置项对于解决模块导入问题和文件路径问题非常重要,因为 Python 和其他一些语言通常在当前工作目录中查找模块和文件。

选择哪个设置通常取决于你的项目结构和代码的需求。如果你的代码高度依赖于文件和目录的组织结构,使用 "code-runner.fileDirectoryAsCwd": true 可能更合适。如果你的代码主要在一个统一的工作目录中运行,并且文件和模块的路径都是基于这个工作目录的,使用 "code-runner.fileDirectoryAsCwd": false 可能更合适。

4)“python.terminal.executeInFileDir”

在setting.json中设置 “python.terminal.executeInFileDir” ,适用于 Python 扩展。但不管是true还是false均无效,功能与上一条类似

    "python.terminal.executeInFileDir": false, //false使用工作区的根目录作为工作目录。true使用当前文件的目录作为工作目录。

失败说明(抄自chatGPT):

在 Visual Studio Code 的 Python 扩展中,"python.terminal.executeInFileDir" 是一个设置项,用于确定当你在终端中运行 Python 文件时的工作目录(Current Working Directory, CWD)。这个设置项的值会影响模块导入、文件路径解析等操作。

"python.terminal.executeInFileDir": true

功能:

当设置为 true,VSCode 将使用当前打开的 Python 文件所在的目录作为运行该文件时的工作目录。

使用场景:

  • 模块导入:如果你的 Python 文件需要导入同一目录下的其他模块或文件,将此参数设置为 true 可以确保导入路径正确。

  • 相对文件路径:如果你的 Python 代码使用相对路径来读取或写入文件,将此参数设置为 true 可以确保文件操作基于代码文件所在的目录。

  • 多目录项目:在一个包含多个子目录的项目中,如果你希望在每个子目录中分别运行 Python 文件,将此参数设置为 true 可以确保每个代码文件在其所在目录中运行。

"python.terminal.executeInFileDir": false

功能:

当设置为 false,VSCode 将使用工作区的根目录作为运行 Python 文件时的工作目录,而不是文件所在的目录。

使用场景:

  • 单一工作目录:如果你的项目结构简单,所有的 Python 文件都在一个目录中,或者你希望所有的 Python 文件都在工作区的根目录中运行,将此参数设置为 false 可以简化文件和模块的路径管理。

  • 全局模块导入:如果你希望从工作区的根目录导入模块,而不是 Python 文件所在的目录,将此参数设置为 false 可以确保模块导入的一致性。

  • 全局文件操作:如果你希望所有的文件读写操作都基于工作区的根目录,将此参数设置为 false 可以简化文件路径的管理。

总结

选择哪个设置通常取决于你的项目结构和代码的需求。如果你的代码高度依赖于文件和目录的组织结构,使用 "python.terminal.executeInFileDir": true 可能更合适。如果你的代码主要在一个统一的工作目录中运行,并且文件和模块的路径都是基于这个工作目录的,使用 "python.terminal.executeInFileDir": false 可能更合适。文章来源地址https://www.toymoban.com/news/detail-762755.html

到了这里,关于VScode import导入自己的模块文件路径错误ModuleNotFoundError: No module named ‘v0‘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 使用vscode在vue项目中重命名文件选择了更新导入路径仍有部分导入路径没有更新

    使用vscode在vue项目中重命名文件选择了更新导入路径仍有部分导入路径没有更新

    背景: 将一个js文件重命名,vscode弹出是否更新导入路径,选择更新导入后,发现js文件中导入路径都自动更新,vue文件中路径都没有更新。 解决方案: 在设置中搜索updateimport,将最下面的VueUpdate Imports On File Move: Enable 将其勾选,就可以实现vue文件的重命名更新导入。经过实

    2024年02月12日
    浏览(23)
  • Python from import导包ModuleNotFoundError No module named,找不到模块问题

    Python from import导包ModuleNotFoundError No module named,找不到模块问题

    在学习Flask框架的蓝图时,遇到导包时用到了`from . 模块 import 对象`,然后试了试直接 import会报错,直接告诉我找不到模块,发现问题以此记录。 有一个flask框架的项目,目录结构如下: 有一个主包pro_flask,然后下面有两个子包admin和web,还有和pro_flask同级的启动文件 我在与

    2023年04月12日
    浏览(15)
  • error MSB4019: 未找到导入的项目“D:\Microsoft.Cpp.Default.props”。请确认 <Import> 声明中的路径 正确,且磁盘上存在该文件。

    error MSB4019: 未找到导入的项目“D:\Microsoft.Cpp.Default.props”。请确认 <Import> 声明中的路径 正确,且磁盘上存在该文件。

    VS构建项目报错: D:ProgramDataMicrosoftVisualStudioopen-sourcesherpa-onnxmfc-examplesStreamingSpeechRecognitionStreamingSpeechR ecognition.vcxproj(28,3): error MSB4019: 未找到导入的项目“D:Microsoft.Cpp.Default.props”。请确认 Import 声明中的路径  正确,且磁盘上存在该文件。 把报错看十遍!!!了解编译

    2024年02月14日
    浏览(11)
  • Javascript 模块导入导出(import export)

    笔者开始学习 Javascript 的时候,对模块不太懂,不知道怎么导入模块,导出模块,就胡乱一通试 比如 import xx from \\\'test.js\\\' 不起作用,就加个括号 import {xx} from \\\'test.js\\\' 反正总是靠蒙,总有一种写法是对的,其实还是没有理解,还是不懂 尤其是在当初写 www.helloworld.net 网站的时候

    2024年02月05日
    浏览(14)
  • Python中import模块导入的实现原理

    Python中import模块导入的实现原理

    欢迎关注博主 Mindtechnist 或加入【Linux C/C++/Python社区】一起探讨和分享Linux C/C++/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 专栏:《python从入门到实战》 什么是模块 一个.py文件就是一个模块,即Module。 模块分为三种:python标准库、

    2024年02月12日
    浏览(9)
  • import-local执行流程与node模块路径解析流程

    import-local执行流程与node模块路径解析流程

    当本地和全局同时存在两个脚手架命令时,使用 import-local 可以优先加载本地脚手架命令 以上述代码为例:执行 jinhui 命令时实际执行的应该是 node C:Program Filesnodejsjinhui-clicli.js 所以将调试程序定位到全局下的 cli 文件,进入 import-local 源码 Nodejs 模块路径解析流程 Nqde.js 项

    2024年02月15日
    浏览(10)
  • python import 自定义包或者.py文件时出现:ModuleNotFoundError: no module named “xxx“的解决办法

    python import 自定义包或者.py文件时出现:ModuleNotFoundError: no module named “xxx“的解决办法

     以我代码为例,想在 Training_test 包下的 advCNN_training.py 模块里  导入 Model 包下面的 advDA_net.py、CNN_model.py 模块, 1. 使用 from 自定义包 XX . 模块名 XX import XX 出现报错: ModuleNotFoundError: No module named \\\'Model\\\' 解决方案1: 第一步:检查包是否设置“根 源”文件(未设置“源 根”的文

    2024年02月15日
    浏览(49)
  • vscode 中引入文件报类型错误:找不到模块“@/views/login/index.vue”或其相应的类型声明。ts(2307)没有可用的快速修复

    这个错误通常是因为 TypeScript 在编译时无法找到指定路径下的模块或类型声明文件。在这个例子中,它无法找到  @/views/login/index.vue  模块或其相应的类型声明。 请检查你的代码,确保指定路径下的文件存在并且已经正确导出。如果你使用了别名(例如  @ )来指定路径,也

    2024年02月15日
    浏览(13)
  • 如何将Python的上级目录的文件导入?【from.import】

    如何将Python的上级目录的文件导入?【from.import】

    假如有如下目录: -python ----file1 ---------file1_1 ------------------pfile1_1.py ---------pfile1.py ----file2 ---------pfile2.py ----pfile.py ----data.py 在pfile1_1.py中想要将pfile.py 导入怎么办? 将上级文件目录标记为:源代码的根目录。 将所有from和import都设置为绝对路径即可。 如果不想改代码的话还有

    2024年02月09日
    浏览(12)
  • [完美解决]出现“ImportError: DLL load failed while importing _imaging: 找不到指定的模块”的错误

    [完美解决]出现“ImportError: DLL load failed while importing _imaging: 找不到指定的模块”的错误

    在重新配置pytorch虚拟环境时,按照官网下载了pytorch和对应的cuda版本,安装之后在pycharm上测试发现torchvision调用不出来,找不到指定模块。 import torch 成功 import torchvision,报错 DLL:找不到模块 大概率是pillow版本没有对应上,导致torchvision模块不能加载进来。 1、先查看一下Pi

    2024年02月11日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包