如何设置VSCode以便能够从子目录导入文件

16 浏览
0 Comments

如何设置VSCode以便能够从子目录导入文件

@KindNotice: 我已经搜索了当前的帖子,比如这个或这个,寻找潜在的解决方案。然而,我仍然很难将所有信息汇集在一起,找到最佳和可行的设置。虽然我的情况可能不太普遍,但它试图连接来自不同地方的信息。在标记为重复之前,请考虑这一点。\n我的项目结构如下:\nmy-project/\n src/\n model.py\n utils.py\n __init__.py\n notebooks/\n test.py\n在model.py中,我有一个导入语句:\nfrom utils import my_function\n我的工作目录设置为my-project(由os.getcwd()返回)。我正在使用Conda环境,并尝试根据这里的建议修改PYTHONPATH:\n\"env\": {\"PYTHONPATH\": \"${workspaceRoot}, ${workspaceRoot}/src\"}\n在src目录中,我还有一个__init__.py文件。根据我的理解,如果我在VSCode中使用from src.utils import my_function,它应该可以正常工作。然而,在bash终端中从src目录(model.py脚本所在的位置)运行时,会出现问题。另外,我希望能够在notebooks目录中的jupyter notebook文件中导入我的模块。\n在这里,最佳的设置是什么,以便能够从src中导入其他模块的脚本?在这里真的需要编辑PYTHONPATH吗?(我看不到任何效果)。

0
0 Comments

问题:如何设置VSCode以能够从子目录导入文件?

原因:VSCode默认从文件的父文件夹开始导入模块(文件)。

解决方法:

1. 使用绝对路径。设置VSCode搜索路径的方法是从当前项目开始。在执行代码之前,VSCode首先切换到项目文件夹路径。

例如,在“launch.json”中使用以下代码添加项目的绝对路径:

"env": {

"PYTHONPATH": "D:\\...\\folder"

}

2. 使用相对路径。根据文件的相对路径(使用导入的模块文件),找到项目路径,然后VSCode将从项目文件夹开始搜索。

例如,在文件开头使用以下代码找到项目文件夹路径:

import os,sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

运行截图:

![enter image description here](https://i.stack.imgur.com/upJoE.png)

![enter image description here](https://i.stack.imgur.com/zX0ln.png)

![enter image description here](https://i.stack.imgur.com/m1xtH.png)

0