vscode 无法导入自己写的模块文件(.py)问题

问题主要是在 vscode中 python 的读入模块路径存在问题,下面先介绍下python的模块读入路径:

什么是PYTHONPATH?

PYTHONPATH是一个环境变量,用于指定Python解释器在导入模块时搜索模块的路径。当我们导入一个模块时,Python解释器首先会在系统默认的路径中搜索模块,然后再到PYTHONPATH中搜索。如果模块在这些路径中找不到,Python解释器将会抛出“ModuleNotFoundError”。

使用以下代码,查看系统所包含路径:

import sys
for a_path in sys.path:print(a_path)

vscode中两个重要的配置文件

launch.jsonsettings.jsonlaunch.json是使用vscode运行调试程序的启动设置,包括设置环境变量,使用哪个解释器,debug类型以及程序入口等等。settings.json是vscode程序的设置选项,包括快捷键,插件设置等。

解决方案一

lauch.json(在项目目录隐藏文件夹.vscode下面)中,添加"env"“envFile”两个条目:

"env": {"PYTHONPATH":"${workspaceRoot}"},
"envFile": "${workspaceRoot}/.env",

以上操作可以自动将项目根目录(即项目所在的文件夹的路径,在vscode 里面打开的最外面文件夹目录)添加到PYTHONPATH中,但还是无法访问根目录下子目录里面的模块文件,需要下一步操作:

在项目的根目录(与.vscode 文件同级目录下)新建文件.env,在.env文件中添加要包涵自定义库的路径即可:

PYTHONPATH=./my_module 

可以导入多个模块 windows系统 加 ; 分隔符,linux 是:分隔符(注意两个路径之间不要有多余的空格)

以上操作可以使得 按F5 或者 ctrl F5 运行程序没有问题, 但是使用右上角Run Python File 还是会报错,所以就尽量使用快捷键,方便有不会出错

解决方案二

首先通过修改操作系统的环境变量来永久添加目录到PYTHONPATH

  1. 打开系统的环境变量设置,进入“高级系统设置”面板。
  2. 在“高级”选项卡下,点击“环境变量”按钮,打开环境变量设置对话框。
  3. 在“系统变量”列表中找到名为“PYTHONPATH”的变量,如果不存在,则点击“新建”按钮创建一个新的变量,并命名为“PYTHONPATH”。
  4. 编辑这个变量的值,将目标目录的路径添加到变量值的末尾,用分号分隔。
  5. 点击“确定”按钮保存设置。

然后修改vscode 里面的settings.json文件:

ctrl , 打开设置,在工作台 - 外观 里面,编辑settings.json,添加如下代码:

"terminal.integrated.env.windows": {"PYTHONPATH":"${workspaceFolder};${env:PYTHONPATH}"}

以上操作,需要重启vscode 生效,

该方法 无论使用快捷键F5 ctrl F5,还是使用右上角快捷方式,都可以正常运行。

综上推荐方案一,只是运行是使用快捷键即可。

参考:

1、windows下VScode修改PYTHONPATH变量方便导入模块_vscode怎么添加环境变量path_那时间总是跑得很潇洒的博客-CSDN博客

2、在 VS Code 中设置多个 PYTHONPATH - 个人文章 - SegmentFault 思否

3、彻底解决VScode中采用python import自定义模块显示unresolved import 问题 和 无法跳转到自定义模块函数定义_fdd096030079的博客-CSDN博客

4、python包导入问题:vscode配置PYTHONPATH环境变量_vscode pythonpath_?-ldl的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/20435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 268. Missing Number

Problem Given an array nums containing n distinct numbers in the range [0, n], return the only number in the range that is missing from the array. Algorithm Sum all the numbers as x x x and use n ( n 1 ) 2 − x \frac{n(n1)}{2} - x 2n(n1)​−x. Code …

k8s概念-secret

回到目录 k8s secrets用于存储和管理一些敏感数据,比如密码,token,密钥等敏感信息。它把 Pod 想要访问的加密数据存放到 Etcd 中。然后用户就可以通过在 Pod 的容器里挂载 Volume 的方式或者环境变量的方式访问到这些 Secret 里保存的信息了…

npm,yarn,pnpm

原理 npm、yarn和pnpm都是用于管理Node.js项目依赖的包管理工具,下面对它们进行详细讲解: npm(Node Package Manager): npm是Node.js的默认包管理工具,也是最早被广泛使用的。npm使用package.json文件来管…

【多模态】21、BARON | 通过引入大量 regions 来提升模型开放词汇目标检测能力(CVPR2021)

文章目录 一、背景二、方法2.1 主要过程2.2 Forming Bag of Regions2.3 Representing Bag of Regions2.4 Aligning bag of regions 三、效果 论文:Aligning Bag of Regions for Open-Vocabulary Object Detection 代码:https://github.com/wusize/ovdet…

pytorch(续周报(1))

文章目录 2.1 张量2.1.1 简介2.1.2 创建tensor2.1.3 张量的操作2.1.4 广播机制 2.2 自动求导Autograd简介2.2.1 梯度 2.3 并行计算简介2.3.1 为什么要做并行计算2.3.2 为什么需要CUDA2.3.3 常见的并行的方法:网络结构分布到不同的设备中(Network partitioning)同一层…

微服务系列<3>---微服务的调用组件 rpc 远程调用

什么是rpc调用,让我们调用远程方法就像调用本地方法一样 这就属于rpc调用 rpc是针对于本地来说的 调用远程方法根调用本地方法一样 如果能达到这种效果 就是rpc调用如果达到一种效果 调用远程和调用本地一样 他就是一种rpc框架2个微服务 之间发的调用 我们之前通过ribbon的方式…

springboot访问请求404的原因

是记录,可能出现错误 可能出现的原因 1.你请求的URL路径不对,比如说你请求的路径是/usr/list,GET方法,但是你UserController上面的RequestMapping是这个样子:RequestMapping(“user”),有可能哈 2.前端的请求时GET方法,后端对应的处理函数的方…

【Linux命令200例】whereis用于搜索以及定位二进制文件

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆本文已收录于专栏:Linux命令大全。 🏆本专栏我们会通过具体的系统的命令讲解加上鲜…

IDA+Frida分析CTF样本和Frid源码和objection模块

文章目录 一些资料IDA调试命令IDA调试安卓的10个技巧objection基本使用 Wallbreaker1frida源码阅读之frida-java 第一个实例EasyJNI第二个实例objection资料 art_trace2.pyart_trace2.js IDAFrida分析CTF样本和Frid源码和objection模块 一些资料 IDA调试命令 adb devices adb…

C#设计模式之---抽象工厂模式

抽象工厂模式(Abstract Factory) 抽象工厂模式(Abstract Factory Pattern)是一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。工厂方…

Python 批量处理JSON文件,替换某个值

Python 批量处理JSON文件,替换某个值 直接上代码,替换key TranCode的值 New 为 Update。输出 cancel忽略 import json import os import iopath D:\\Asics\\850\\202307 # old path2 D:\\test2 # new dirs os.listdir(path) num_flag 0 for file…

Python3 高级教程 | Python3 正则表达式(一)

目录 一、Python3 正则表达式 (一)re.match函数 (二)re.search方法 (三)re.match与re.search的区别 二、检索和替换 (一)repl 参数是一个函数 (二)comp…

C++ 矩形切割

【问题描述】 小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。 当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方 形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正…

Curve深陷安全事件,OKLink如何破局

出品|欧科云链研究院 作者|Matthew Lee 7月31号,Curve 在平台表示 Vyper 0.2.15 的稳定币池由于编译器的漏洞所以遭到攻击。具体因为重入锁功能的失效,所以黑客可以轻易发动重入攻击,即允许攻击者在单次交易中执行某…

二、搜索与图论6:Dijkstra 模板题+算法模板(Dijkstra求最短路 I, Dijkstra求最短路 II,1003 Emergency)

文章目录 算法模板Dijkstra题目代码模板朴素dijkstra算法堆优化版dijkstra 树与图的存储(1) 邻接矩阵:(2) 邻接表:关于e[],ne[],h[]的理解 关于堆的原理与操作 模板题Dijkstra求最短路 I原题链接题目思路题解 Dijkstra求最短路 II原题链接题目思路题解 1…

05|Oracle学习(UNIQUE约束)

1. UNIQUE约束介绍 也叫:唯一键约束,用于限定数据表中字段值的唯一性。 1.1 UNIQUE和primary key区别: 主键/联合主键每张表中只有一个。UNIQUE约束可以在一张表中,多个字段中存在。例如:学生的电话、身份证号都是…

AWS——01篇(AWS入门 以及 AWS之EC2实例及简单实用)

AWS——01篇(AWS入门 以及 AWS之EC2实例及简单实用) 1. 前言2. 创建AWS账户3. EC23.1 启动 EC2 新实例3.1.1 入口3.1.2 设置名称 选择服务3.1.3 创建密钥对3.1.4 网络设置——安全组3.1.4.1 初始设置3.1.4.2 添加安全组规则(开放新端口&…

ELKELFK 日志分析系统

目录 一、ELK 概述 二、为什么要使用 ELK 三、完整日志系统基本特征 四、ELK 的工作原理: 五、ELK Elasticsearch 集群部署(在Node1、Node2节点上操作) 1.环境准备 2.部署 Elasticsearch 软件 3.安装 …

尝试多数据表 sqlite

C 唯一值得骄傲的地方就是 通过指针来回寻址 😂 提高使用的灵活性 小脚本buff 加成

Windows用户如何将cpolar内网穿透配置成后台服务,并开机自启动?

Windows用户如何将cpolar内网穿透配置成后台服务,并开机自启动? 文章目录 Windows用户如何将cpolar内网穿透配置成后台服务,并开机自启动?前置准备:VS Code下载后,默认安装即可VS CODE切换成中文语言 1. 将…