一文详解如何从根本上优雅地解决VSCode中的Python模块导入问题

 更新时间:2024年07月06日 10:48:44   作者:向日葵花籽儿  
有时你可能会遇到这种问题,明明用pip安装好了一个python模块,但在VScode中总是显示错误,这篇文章主要给大家介绍了关于如何从根本上优雅地解决VSCode中的Python模块导入问题的相关资料,需要的朋友可以参考下

整体概述:
在我尝试运行 test_deal_file.py 时,我遇到了一个 ModuleNotFoundError 错误,Python告诉我找不到名为 controllers 的模块。这意味着我无法从 deal_file.py 中导入 read_excel 函数。

为了解决这个问题,我尝试了几种方法。
首先,我使用了相对导入,这在不改变当前工作目录的情况下是有效的,但一旦我切换了目录,这个方法就不行了。
接着,我尝试动态地将当前工作目录添加到 sys.path 中。
这样做虽然有效,但我觉得这种方法不够优雅。

所以,我决定采取一种更彻底的解决方案。
我通过修改 VSCode 的 settings.json 文件,设置了 PYTHONPATH 环境变量,确保了我的项目路径 my_project 被加入到模块搜索路径中。
我在settings.json中为不同的操作系统配置了terminal.integrated.env` 部分,然后重启了虚拟环境和集成终端。重新运行我的文件后,问题终于解决了。

通过这篇文章,我想和大家分享如何以一种更优雅的方式解决 Python 项目中的模块导入问题。
同时,我也介绍了如何在 VSCode 中管理项目环境变量和运行路径,这对于解决开发过程中的环境配置问题非常有帮助。希望我的经验能成为其他开发者在面对类似问题时的宝贵资源。

我的问题解决过程

(想直接看解决教程的直接跳到下一个标题内容)我的项目结构是这样的

my_project/
├── controllers/
│   ├── __init__.py     
│   └── deal_file.py     
└── tests/
    ├── __init__.py      
    └── test_deal_file.py 

结果运行test_deal_file.py会出现报错信息:

# 报错信息
    from controllers.deal_file import read_excel
ModuleNotFoundError: No module named 'controllers'

我尝试了引用改成from ..controllers.deal_file import read_excel,terminal不切换目录可以运行成功,但切换目录后还是运行失败

我又尝试了

import sys
import os
sys.path.append(os.getcwd())

但是说实话,不是很美观

我决定从根本上解决这个问题。

首先我打印我所有运行路径

import sys
paths = sys.path
for path in paths:
    print(path)

输出结果果然,不包含我my_project的路径。如何把my_project路径添加到系统运行路径呢?方法如下:

vscode 解决模块导入问题的流程

1. 打开设置界面在 VSCode 中,您可以通过点击左下角的齿轮图标然后选择 “Settings” 来打开设置界面。
另一种方式是使用快捷键 Ctrl + ,(在 Mac 上是 Cmd + ,)直接打开设置界面。

2. 选择合适的工作区打开setting界面后,上面有三个选项,对应着三种级别的设置文件工作区(workspace)、远程(remote)和用户(user)。每个级别的设置都有其特定的用途和作用范围。

用户设置(User settings): 位于全局级别,适用于您计算机上的所有 VSCode 实例。 路径通常在
~/.config/Code/User/settings.json(Unix/Linux)或
%APPDATA%\Code\User\settings.json(Windows)。 用于存储您希望在所有项目和环境中使用的全局配置。
工作区设置(Workspace settings): 特定于当前打开的工作区或项目。 路径通常在工作区根目录下的 .vscode/settings.json 文件中。 用于存储针对特定项目或工作区的配置,这些配置不会影响其他项目。
远程设置(Remote settings): 特定于远程开发环境,例如通过 SSH 或容器连接的远程服务器。 路径通常在 .vscode-remote/settings.json 文件中,这个文件位于您的本地工作区目录下。 用于存储针对远程开发环境的配置,如
SSH 连接设置、容器设置等。

现在你需要选择适合你的设置文件:

如果环境变量仅适用于特定项目,您应该在工作区设置文件中添加它们。

如果环境变量需要在所有项目中使用,您应该在用户设置文件中添加它们。

如果环境变量是针对远程开发环境的,您应该在远程设置文件中添加它们。

3. 打开对应工作区的setting.json页面往下滑找到Edit in setting.json,点击打开

4. 编辑setting.json接下来你要修改这个文件

下面内容复制到你的setting.json文件中,并保存

{
    "terminal.integrated.env.windows": {
        "PYTHONPATH": "/path/to/your/project"
    },
    "terminal.integrated.env.linux": {
        "PYTHONPATH": "/path/to/your/project"
    },
    "terminal.integrated.env.osx": {
        "PYTHONPATH": "/path/to/your/project"
    }
}

  • 重启虚拟环境
    Unix/Linux 系统:source /path/to/venv/bin/activateWindows 系统:\path\to\venv\Scripts\activate

  • 关闭terminal集成终端
    在 VSCode 中,关闭当前打开的集成终端。

  • 打开新的集成终端:
    通过点击 VSCode 顶部的 “Terminal” 菜单或者使用快捷键 Ctrl+ (在 Mac 上是Cmd+ ) 来打开一个新的集成终端窗口。

  • 重新运行你的文件
    可以看到你的项目路径已经添加到环境,项目也可以正常运行了👌

总结 

到此这篇关于从根本上优雅地解决VSCode中的Python模块导入问题的文章就介绍到这了,更多相关VSCode中Python模块导入问题解决内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python+wxPython实现文件内容搜索工具

    Python+wxPython实现文件内容搜索工具

    在本篇文章中,我们将介绍如何使用 wxPython 库创建一个简单的文件搜索工具,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
    2023-08-08
  • Windows环境打包python工程为可执行程序的详细过程

    Windows环境打包python工程为可执行程序的详细过程

    我的开发环境是windows7,然后系统是64位,安装的python和wxpython都是32位的,本文记录我怎样用pyinstaller打包我用python开发的工程,在网上搜索了很多资源,基本上都是不全的,所以我在这儿记录一下这个比较完整的过程,一起看看吧
    2024-01-01
  • Python实现微信机器人的方法

    Python实现微信机器人的方法

    这篇文章主要介绍了Python实现微信机器人的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Windows和Linux下Python输出彩色文字的方法教程

    Windows和Linux下Python输出彩色文字的方法教程

    这篇文章主要介绍了在Windows和Linux中Python输出彩色文字的方法,通过设置彩色文字给大家更醒目的效果,文中给出了详细的介绍和示例代码,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-05-05
  • Python实现一个Git日志统计分析的小工具

    Python实现一个Git日志统计分析的小工具

    这篇文章主要给大家介绍了关于利用Python如何实现一个Git日志统计分析小工具的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-12-12
  • Scala中使用Jsoup库处理HTML文档的案例分析

    Scala中使用Jsoup库处理HTML文档的案例分析

    Scala是一种多范式的编程语言,具有函数式编程和面向对象编程的特点,同时也能够与Java语言完美兼容,它拥有强大的类型推断、高阶函数、模式匹配等特性,使得代码更加简洁、灵活和易于维护,这篇文章主要介绍了Scala中使用Jsoup库处理HTML文档的案例分析,需要的朋友可以参考下
    2024-04-04
  • 对python中的高效迭代器函数详解

    对python中的高效迭代器函数详解

    今天小编就为大家分享一篇对python中的高效迭代器函数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • 13个有趣又好玩的Python游戏代码分享

    13个有趣又好玩的Python游戏代码分享

    今天小编跟大家分享13个有趣又好玩的Python小游戏示例代码,教你如何通过边打游戏边学编程!感兴趣的小伙伴快跟随小编一起学习起来
    2022-02-02
  • 在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)

    在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)

    这篇文章主要介绍了在Anaconda3下使用清华镜像源安装TensorFlow(CPU版),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Python使用Selenium实现模拟登录的示例代码

    Python使用Selenium实现模拟登录的示例代码

    Selenium(本文基于python3.8)是一个功能强大的自动化测试工具,它可以用于模拟用户在浏览器中的行为,比如点击、输入、滚动等等,本教程将详细介绍如何使用Python编写一个模拟登录地爬虫,使用XPath等多种元素匹配方法,需要的朋友可以参考下
    2023-08-08

最新评论