问题
在带有子包的 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
在我自己的代码中(我认为这很恶心,但如果我想将项目发送给某人并让它简单地工作而不需要他们进行任何额外的配置,那很好)
问题
有没有办法在全局范围内解决 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/