Python VSCode:如何将模块从我的代码路径导入同一路径中的另一个文件?

Python VSCode:如何将模块从我的代码路径导入同一路径中的另一个文件?,python,visual-studio-code,Python,Visual Studio Code,我正在尝试使用VSCode调试我的python应用程序。但我无法正确配置我的环境。尝试将类从源路径中的一个文件夹导入到另一个文件夹时,会显示以下消息: Traceback (most recent call last): File "/Users/mb/Library/source/sandbox/lib/lib.py", line 1, in <module> from app.main import MyClass ModuleNotFoundError: No mo

我正在尝试使用VSCode调试我的python应用程序。但我无法正确配置我的环境。尝试将类从源路径中的一个文件夹导入到另一个文件夹时,会显示以下消息:

Traceback (most recent call last):
  File "/Users/mb/Library/source/sandbox/lib/lib.py", line 1, in <module>
    from app.main import MyClass
ModuleNotFoundError: No module named 'app'
#main.py
类别MyClass:
定义初始化(自):
打印('正在创建对象…')
def打印信息(自我,信息):
打印(信息)
#lib.py
从app.main导入MyClass
myclass=myclass()
myclass.print_消息('hello,world!')
尝试运行
lib.py
时,使用默认配置运行当前文件,我会收到上面的错误消息

另外,我创建了一个
.vscode/launch.json
来设置工作目录,但没有用。这是我的
launch.json

{
//使用IntelliSense了解可能的属性。
//悬停以查看现有属性的描述。
//有关更多信息,请访问:https://go.microsoft.com/fwlink/?linkid=830387
“版本”:“0.2.0”,
“配置”:[
{
“名称”:“Python:当前文件”,
“类型”:“python”,
“请求”:“启动”,
“程序”:“${file}”,
“控制台”:“集成终端”,
“cwd”:“${workspaceFolder}”
},
{
“名称”:“Python:Module”,
“类型”:“python”,
“请求”:“启动”,
“模块”:“主”
}
]
}
我敢肯定,我错过了一个简单的设置,但我不能把我的手指


注意

  • 使用的解释器是:Python 3.7.5 64位
  • 以上代码在PyCharm中运行良好
  • 在阅读了一些VSCode文档之后,我在
    launch.json
    中添加了
    “env”:{“PYTHONPATH”:“${workspaceFolder}”}
    ,但这没有任何好处
  • 我还创建了一个VSCode任务来回显
    ${workspaceFolder}
    变量,并且输出从路径中剥离了所有
    \
    ,就好像它们没有被转义一样。 以下是
    .vscode/tasks.json
    中的任务:
{
“版本”:“2.0.0”,
“任务”:[
{
“标签”:“工作空间文件夹”,
“类型”:“外壳”,
“命令”:“echo${workspaceFolder}”
}
]
}
下面是从中得到的输出:

执行任务:echo C:\Users\mb\Library\source\sandbox< C:UserSMLibrarySourceSandbox 终端将被任务重用,请按任意键将其关闭。
让我来帮你。如果你想导入一个不在当前目录中的文件,请执行以下操作

from . import main
有关第二个问题,请访问此

查看

基本上,您要做的是
cd/path/to/sandbox
然后
export PYTHONPATH=$(pwd)

现在,应用程序的根目录位于python路径中

你只是在这个层次上对待一切


从app.main导入MyClass
您可以检查vscode的状态栏以指定要使用的解释器。确定。它是:python3.7.5 64位是的,只需单击它来检查用于运行Python程序的环境好的,我读到的路径是:
/usr/local/bin/python3
。这就是您的意思吗?是的,您应该能够为python项目选择环境的路径。确保它是一样的
from . import main