VS Code中的Python:从子文件夹导入模块时出错

u5i3ibmn  于 2023-11-16  发布在  Python
关注(0)|答案(2)|浏览(168)

我最近开始探索VS Code来开发Python代码,当我试图从子文件夹导入模块时遇到了一个问题。(文件夹包含__init__.py文件等)我相信我按照说明正确设置了VS Python扩展。除了这个导入命令,其他所有命令都运行良好,但我还没弄明白到底哪里出了问题
该项目的结构如下:根文件夹,设置为cwd包含两个文件夹(srcbld)。src包含py-文件,该文件导入使用from bld.foo import foo_function保存在bld-文件夹中的foo.py中的模块
当运行文件时,我得到以下错误:ModuleNotFoundError: No module named ‘bld'。我安装了几个Anaconda Python环境,每个环境都有同样的问题。当将foo.py复制到src目录并使用from foo import foo_function时,一切正常。
我的launch.json文件如下:

{
    "version": "0.2.0",
    "configurations": [

        {
            "name": "Python: Current File (Integrated Terminal)",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "cwd": "${workspaceFolder}",
            "env": {"PYTHONPATH": "${workspaceFolder}:${workspaceFolder}/bld"},
            "console": "integratedTerminal"
        }
    ]
}

字符串
任何想法或帮助将不胜感激!

dy1byipe

dy1byipe1#

斯特凡的方法对我很有效
以文件系统为例:workspaceFolder/folder/subfolder 1/subfolder 2/bar.py
我无法导入类似于:from folder.subfolder1.subfolder2 import bar它说:ModuleNotFoundError: No module named 'folder'
我在.vscode/settings.json中添加了以下内容:

"terminal.integrated.env.osx": {
        "PYTHONPATH": "${workspaceFolder}"
    }

字符串
我还在代码的开头添加了:

import sys
#[... more imports ...]
sys.path.append(workspaceFolder)
# and then, the subfolder import:
from folder.subfolder1.subfolder2 import bar


现在,它的工作。
注意事项:我所有的文件夹和目录都有一个名为__init__.py的空文件。我仍然需要执行上述步骤。VSCode版本:1.52.0(从10-dec-2020)

tnkciper

tnkciper2#

我想我终于自己找到了答案:集成终端不会从.env-文件中扫描PYTHONPATH。当在集成窗口中运行该文件时,PYTHONPATH是从.env中正确获取的。因此,为了在终端中运行我的脚本,我必须在settings.json中添加terminal.integrated.env.*行,如下所示:

{
    "python.pythonPath": "/anaconda3/envs/py36/bin/python",
    "python.linting.enabled": true,
    "python.linting.pylintEnabled": true,
    "python.linting.flake8Enabled": false,
    "python.envFile": "${workspaceFolder}/.env",
    "terminal.integrated.env.osx": {
        "PYTHONPATH": "${workspaceFolder}"
    }
}

字符串

相关问题