【问题标题】:How to setup VSCode to be able to import files from child directory如何设置 VSCode 以便能够从子目录导入文件
【发布时间】:2021-02-25 05:02:13
【问题描述】:

@KindNotice:我已经搜索了this onethis one 等当前的履带,以寻找潜在的解决方案。但是,我仍然很难将所有信息收集在一起并找到最佳的工作设置。尽管我的情况可能不太普遍,但它试图将来自不同地方的点连接起来。请在标记为重复之前考虑到这一点。

我的项目结构如下:

my-project/
  src/
    model.py
    utils.py
    __init__.py
  notebooks/
    test.py

model.py 我有一个导入:

from utils import my_function

我的工作目录设置为my-project(由os.getcwd() 返回)。我正在使用 Conda 环境,并尝试按照here 的建议修改PYTHONPATH

"env": {"PYTHONPATH": "${workspaceRoot}, ${workspaceRoot}/src"}

我的src 目录中也有__init__.py。据我了解,如果我使用from src.utils import my_function,它将在 VSCode 中正常工作 - 但是,当从 src 目录(model.py 脚本所在的位置)的 bash 终端运行时。为了添加所有这些,我希望能够将我的模块导入位于 notebooks 的 jupyter 笔记本文件中。

src 这里导入其他模块的脚本的最佳设置是什么?在这里编辑PYTHONPATH 真的有必要吗? (我看不出有什么影响)。

【问题讨论】:

  • 你想从“module.py”中的“utils.py”导入方法吗?如何理解“要添加到所有这些,我希望能够将我的模块导入位于笔记本中的 jupyter 笔记本文件中。”,你想在 Jupyter 文件中导入 python 文件吗?
  • PYTHONPATH 是环境变量,需要用;: 分隔(分别在UNIX/windows 上)

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


【解决方案1】:

导入其他文件夹中的模块(文件)时,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__))))

运行:

【讨论】:

    猜你喜欢
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    相关资源
    最近更新 更多