找回密码
 会员注册
查看: 22|回复: 0

从根本上优雅地解决VSCode中的Python模块导入问题

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
65944
发表于 2024-9-10 18:49:48 | 显示全部楼层 |阅读模式
整体概述:在我尝试运行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.py1234567结果运行test_deal_file.py会出现报错信息:#报错信息fromcontrollers.deal_fileimportread_excelModuleNotFoundError:Nomodulenamed'controllers'123我尝试了引用改成from..controllers.deal_fileimportread_excel,terminal不切换目录可以运行成功,但切换目录后还是运行失败我又尝试了importsysimportossys.path.append(os.getcwd())123但是说实话,不是很美观我决定从根本上解决这个问题。首先我打印我所有运行路径importsyspaths=sys.pathforpathinpaths:print(path)1234输出结果果然,不包含我my_project的路径。如何把my_project路径添加到系统运行路径呢?方法如下:vscode解决模块导入问题的流程1.打开设置界面在VSCode中,您可以通过点击左下角的齿轮图标然后选择“Settings”来打开设置界面。另一种方式是使用快捷键Ctrl+,(在Mac上是Cmd+,)直接打开设置界面。2.选择合适的工作区打开setting界面后,上面有三个选项,对应着三种级别的设置文件工作区(workspace)、远程(remote)和用户(user)。每个级别的设置都有其特定的用途和作用范围。用户设置(Usersettings):位于全局级别,适用于您计算机上的所有VSCode实例。路径通常在~/.config/Code/User/settings.json(Unix/Linux)或%APPDATA%\Code\User\settings.json(Windows)。用于存储您希望在所有项目和环境中使用的全局配置。工作区设置(Workspacesettings):特定于当前打开的工作区或项目。路径通常在工作区根目录下的.vscode/settings.json文件中。用于存储针对特定项目或工作区的配置,这些配置不会影响其他项目。远程设置(Remotesettings):特定于远程开发环境,例如通过SSH或容器连接的远程服务器。路径通常在.vscode-remote/settings.json文件中,这个文件位于您的本地工作区目录下。用于存储针对远程开发环境的配置,如SSH连接设置、容器设置等。现在你需要选择适合你的设置文件:如果环境变量仅适用于特定项目,您应该在工作区设置文件中添加它们。如果环境变量需要在所有项目中使用,您应该在用户设置文件中添加它们。如果环境变量是针对远程开发环境的,您应该在远程设置文件中添加它们。3.打开对应工作区的setting.json页面往下滑找到Editinsetting.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"}}1234567891011重启虚拟环境Unix/Linux系统:source/path/to/venv/bin/activateWindows系统:\path\to\venv\Scripts\activate关闭terminal集成终端在VSCode中,关闭当前打开的集成终端。打开新的集成终端:通过点击VSCode顶部的“Terminal”菜单或者使用快捷键Ctrl+(在Mac上是Cmd+)来打开一个新的集成终端窗口。重新运行你的文件可以看到你的项目路径已经添加到环境,项目也可以正常运行了👌
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-31 06:04 , Processed in 0.528149 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表