@KindNotice:我搜索了当前的足迹,如 this one或 this one潜在的解决方案。但是,我仍然很难将所有信息收集在一起并找到最佳的工作设置。尽管我的案例可能不那么普遍,但它试图将来自 SO 不同地方的点连接起来。在标记为重复项之前请考虑这一点。
我的项目结构如下:
my-project/
src/
model.py
utils.py
__init__.py
notebooks/
test.py
在 model.py
我有一个导入:
from utils import my_function
我的工作目录设置为 my-project
(由 os.getcwd()
返回)。我正在使用 Conda 环境,并尝试按照建议修改 PYTHONPATH
here与:
"env": {"PYTHONPATH": "${workspaceRoot}, ${workspaceRoot}/src"}
我的 src
目录中也有 __init__.py
。根据我的理解,如果我使用 from src.utils import my_function
它会在 VSCode 中正常工作 - 但是,当从 src
目录(其中 model.py
脚本所在)。为了添加所有这些,我希望能够将我的模块导入位于 notebooks
中的 jupyter notebook 文件中。
能够从此处的 src
导入其他模块的脚本的最佳设置是什么?在这里编辑 PYTHONPATH
真的有必要吗? (我看不到任何效果)。
最佳答案
导入其他文件夹下的模块(文件)时,VSCode默认从文件的父文件夹开始。
我在VSCode中导入和使用其他文件中文件的类和方法的方式如下:
使用绝对路径。设置VSCode搜索路径的方式是从当前项目开始。 VSCode 在执行代码之前先更改项目文件夹路径。
例如:使用
"env": { "PYTHONPATH": "D:\\...\\folder" }
在“
launch.json
”中添加项目的绝对路径。使用相对路径。根据文件的相对路径找到项目路径(使用导入的模块文件),然后VSCode将从项目文件夹开始搜索。
例如:在文件开头使用如下代码查找项目文件夹路径:
import os,sys sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
运行:
关于python - 如何设置 VSCode 以便能够从子目录导入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64816652/