像 PyCharm/Spyder 一样自动将项目添加到 VS Code 中的 sys.path 吗?

2024-01-05

Problem

在带有子包的 Python 项目中,绝对导入不适用于不在项目根目录中的任何文件。

-  my_project
  -  my_package
    - __init__.py
    - my_module.py
  - my_scripts
    - some_script.py

some_script.py

import sys
print('\n'.join(sys.path))

from my_package.my_module import hello_world
hello_world()

Output (PyCharm)

D:\_MyFiles\Programming\Projects\python-import-demo\my_scripts
D:\_MyFiles\Programming\Projects\python-import-demo
***list of unrelated paths***

Hello, World!

Output (VS Code)

d:\_MyFiles\Programming\Projects\python-import-demo\my_scripts
***list of unrelated paths***

Traceback (most recent call last):
  File "d:\_MyFiles\Programming\Projects\python-import-demo\my_scripts\some_script.py", line 4, in <module>
    from my_package.my_module import hello_world
ModuleNotFoundError: No module named 'my_package'

解决方法

  • 使用相对导入(这会破坏__main__ blocks)
  • 编辑项目级别launch.json配置(运行时仍然出现问题.py通过顶部栏或 CLI 的文件)
  • Run pip install -e MY_PROJECT(我不想为我打开的每个项目重复此操作)
  • 显式找到项目根目录并将其附加到sys.path在我自己的代码中(在我看来,这很恶心,但如果我想将项目发送给某人并让它简单地工作而无需他们进行额外的配置,那很好)

我找到了所有这些解决方法here https://stackoverflow.com/questions/14132789/relative-imports-for-the-billionth-time and here https://fadil-nohur.medium.com/resolving-intra-project-imports-in-python-a-simple-guide-visual-studio-code-98472b0a8f59

Question

有没有办法在全球范围内解决 VS Code 的这个问题?当我在 PyCharm 中打开一个项目并运行任何.py文件中,绝对导入会自动工作,无需任何手动配置,因为项目根目录被添加到sys.path这就是我想要的 VS Code。我不想在每个新项目上都使用上述任何解决方法。


通过将其添加到来修复它settings.json

  "terminal.integrated.env.windows": {
    "PYTHONPATH": "${workspaceFolder}"
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

像 PyCharm/Spyder 一样自动将项目添加到 VS Code 中的 sys.path 吗? 的相关文章

随机推荐

  • 连接 Pandas 日期时间

    我有这个问题的解决方案 实际上有两个解决方案 但我对它们不满意 原因是我尝试读取的文件大约有 1200 万行 使用这些解决方案需要花费大量时间来处理它们 主要是因为解法是逐行运算 所以 我读了这样的文件 In 1 df pd read cs
  • 如何使用 Injector 在函数中模拟注入服务

    在 Angular 7 x 中 我有一个全局错误处理 可以使用注入器注入他的服务 因此每个函数都有一个对注入器的引用 如下所示 import ErrorHandler Injectable Injector NgZone from angu
  • 用户是否使用键盘或鼠标离开 WPF TextBox?

    我有一个文本框的处理程序PreviewLostKeyboardFocus事件 当我使用键盘 Tab 键 或鼠标 通过单击表单上的另一个文本框 离开文本框时 它会触发 处理程序需要一个KeyboardFocusChangedEventArgs
  • 如何将数组列表分配给jsp中的选择选项

    我有清单 ArrayList list new ArrayList 我写这个列表选择选项 td td
  • .NET Native 应用程序相当于修改标头 Firefox Addon

    我正在尝试用 C 开发一个袜子隧道应用程序 它能够通过使用添加和修改的标头请求来打开网站 类似于修改标题 Firefox 插件 https addons mozilla org en US firefox addon modify head
  • 动态 SQL 和存储过程优化

    我读到在存储过程中使用动态 SQL 会损害存储过程的性能 我猜想理论是存储过程不会存储通过 EXEC 或 sp executesql 执行的 SQL 的执行计划 我想知道这是否属实 如果这是真的 我是否对多个嵌套 IF 块也有同样的问题 每
  • 如何在 java EE 7 的 JAX-RS 层中获取 Java 对象的 JSON 表示?

    我们当前使用的是 Java EE 5 在发送响应之前 我们会执行以下操作将 POJO 转换为 JSON GET Path books Produces MediaType APPLICATION JSON public Response g
  • ASN.1 DER 格式的私钥

    为什么模数要用前导零填充 我正在阅读 PKCS 1 和 PKCS 8 但没有找到任何相关内容 在 C 中 必须删除前导零 有人知道为什么吗 At http etherhack co uk asymmetry docs rsa key bre
  • APNs“提取推送通知包失败”

    我按照手册操作https developer apple com notifications safari push notifications https developer apple com notifications safari
  • ClearCase:我如何知道分支的父分支?

    是否有可能获得分支的层次结构 我必须知道给定分支的父亲 我必须知道给定分支的子级 如何通过cleartool获取它 我不喜欢基于视图配置规范 谢谢你 使用基本 ClearCase 您无法知道分支的父分支 因为它可能因文件而异 文件可以启动分
  • QObject::connect:无法在 PySide 中对“对象”类型的参数进行排队

    我正在使用 PySide Python Qt 绑定 我有一个 QThread 类的工作线程 它通过信号 槽机制更新主 GUI 线程 更新 QTableWidget 在我的工作线程中 我有以下内容 self emit SIGNAL alter
  • date_create_from_format() 返回错误值。 [复制]

    这个问题在这里已经有答案了 这是我用文字表达月份的简单代码 效果很好 预计二月 回归进行曲 如何解决这个问题 这是 PHP 预定义的函数 是它工作错误还是我使用错误 可能是因为当前的默认日期是 30 日 而
  • 运行插入语句 x 次

    我有两张桌子 一张桌子A有 n 行数据 另一个表B是空的 我想要insert表中的 n 行B 表中每行 1 行A Table B表中会有几个字段A其中 包括表中的外键A 最后我想要一排B对于每一行A 为此 我使用了 INSERT INTO
  • 如何使用 PowerManager 和 PARTIAL_WAKE_LOCK

    我开发了一个小应用程序 这个应用程序必须在设备处于睡眠或深度睡眠状态时始终运行 按右键关闭屏幕 我读了很多关于它的文章 并且都告诉我方法是使用 PowerManager 我的问题是 如果我使用这个命令 我的结构是 gt myActivity
  • System.Web.WebPages 内的 MethodAccessException 将 mvc 3 迁移到 mvc 5

    使用 Visual Studio 2013 我将混合 Asp Net Webforms MVC 3 Framework 4 0 Web 应用程序迁移到 Asp Net Webforms MVC 5 2 2 Framework 4 5 1 我
  • 如何从函数内部的 for 循环退出(转义)函数?

    这是一个理论问题 旨在了解有多少转义 返回或退出 可以应用于嵌套循环或其他控件和函数 我对此感到困惑 因为我被困在代码中如何同时逃离 for 每个循环和方法 https stackoverflow com questions 1557412
  • 将本地分支推送到远程分支

    我在我的 Github 存储库中创建了新存储库 使用 gitpython 库我可以获得这个存储库 然后我创建新分支 添加新文件 提交并尝试推送到新分支 请检查以下代码 import git import random import os r
  • jQuery 将复选框选择转换为数组

    我有一个HTML像这样 div class pgggo list taxon li li div
  • GitHub 操作无法连接到 MongoDB 服务

    我在使用 GitHub 操作运行自动化测试时遇到问题 我不明白为什么我无法连接到运行集成测试的 MongoDB 服务 我尝试了不同的主机 localhost 127 0 0 1 0 0 0 0 但它们都无法连接数据库 它在我的 docker
  • 像 PyCharm/Spyder 一样自动将项目添加到 VS Code 中的 sys.path 吗?

    Problem 在带有子包的 Python 项目中 绝对导入不适用于不在项目根目录中的任何文件 my project my package init py my module py my scripts some script py som