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

标签 python visual-studio-code

问题

在带有子包的 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__ block )
  • 编辑项目级别 launch.json配置(通过顶栏或 CLI 运行 .py 文件时仍然会出现问题)
  • 运行pip install -e MY_PROJECT (我不想对我打开的每个项目都重复此操作)
  • 显式找到项目根目录并将其附加到sys.path在我自己的代码中(我认为这很恶心,但如果我想将项目发送给某人并让它简单地工作而不需要他们进行任何额外的配置,那很好)

我找到了所有这些解决方法herehere

问题

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

最佳答案

通过将其添加到 settings.json

来修复此问题
  "terminal.integrated.env.windows": {
    "PYTHONPATH": "${workspaceFolder}"
  }

关于python - 像 PyCharm/Spyder 一样自动将项目添加到 VS Code 中的 sys.path 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75990606/

相关文章:

Python Tkinter 滚动条问题

macos - 找不到与命令 "dotnet-ef"匹配的可执行文件 (Csproj)

linux - 如何更改 Visual Studio 代码中的工作台字体?

visual-studio-code - 您如何无法使用 prettier 在 vscode 上自动多行?

visual-studio-code - Omnisharp无法正确处理vscode中的默认点网核心3应用

python - 针对多个实现运行相同的测试

python - 如何从 Python 日期时间获取可识别时区的年、月、日、小时等?

python - 从函数返回 boolean 值的最佳实践 - 硬编码或从变量

python - Facebook Graph API - 页面/帖子 - 如何获取照片网址?

c++ - vscode g++ 链接失败 : Undefined symbols for architecture x86_64