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

标签 python visual-studio-code import module vscode-settings

@KindNotice:我搜索了当前的足迹,如 this onethis 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中导入和使用其他文件中文件的类和方法的方式如下:

  1. 使用绝对路径。设置VSCode搜索路径的方式是从当前项目开始。 VSCode 在执行代码之前先更改项目文件夹路径。

    例如:使用

    "env": {
                    "PYTHONPATH": "D:\\...\\folder"
                }
    

    在“launch.json”中添加项目的绝对路径。

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

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

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

运行:

enter image description here

enter image description here

enter image description here

关于python - 如何设置 VSCode 以便能够从子目录导入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64816652/

相关文章:

python - 如何在 Django 中阻止具有特定状态的用户登录

visual-studio-code - 安装完成后在 visual studio 中出现黑屏

node.js - 如何将 markdown-it-emoji 集成到 VS Code 中

flutter - 为什么 Visual Studio Code 中的代码文本没有颜色?

objective-c - Cocos2d 中的 "Attempting to use the forward class ' 游戏 ' as superclass of ' MathGame '"

php - 如何创建 SOAP 1.2 请求

Python 请求 - POST 需要隐藏输入吗?

python - MongoDB 聚合最近记录并将某些字段匹配到最近 30 天

python - × 尝试在 heroku 中安装软件包时遇到错误

java - 如何使用不同包中的方法?