python - VSCode : How to import a module from my code path to another file in the same path?

标签 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 module named 'app'

我创建了一个简单的应用程序来展示这个问题。我的源路径如下所示:
sandbox
+-- .vscode
    --- launch.json
+-- app
    --- __init__.py
    --- main.py
+-- lib
    -- lib.py

# main.py

class MyClass:
    def __init__(self):
        print('Creating object...')
    def print_message(self, message):
        print(message)

# lib.py

from app.main import MyClass


myclass = MyClass()
myclass.print_message('hello, world!')

试图运行 lib.py使用默认配置运行当前文件我收到上面的错误消息。

此外,我创建了一个 .vscode/launch.json设置工作目录,但无济于事。这是我的 launch.json :

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "cwd": "${workspaceFolder}"
        },
        {
            "name": "Python: Module",
            "type": "python",
            "request": "launch",
            "module": "main"
        }
    ]
}

我敢肯定,我缺少一个简单的设置,但我无法解决它。

备注
  • 使用的解释器是:Python 3.7.5 64-bit
  • 上面的代码在 PyCharm 中运行良好。
  • 在阅读了 VSCode 文档后,我添加了 "env": {"PYTHONPATH": "${workspaceFolder}"}launch.json ,但这没有任何好处。
  • 我还创建了一个 VSCode 任务来回应 ${workspaceFolder}变量,并且输出中删除了所有 \从路径上,好像他们没有逃脱。
    这是.vscode/tasks.json中的任务:

  • {
        "version": "2.0.0",
        "tasks": [
          {
            "label": "workspaceFolder",
            "type": "shell",
            "command": "echo ${workspaceFolder}"
          }
        ]
      }
    

    这是从中得到的输出:

    > Executing task: echo C:\Users\mb\Library\source\sandbox <
    
    C:UsersmbLibrarysourcesandbox
    
    Terminal will be reused by tasks, press any key to close it.
    

    最佳答案

    看看 here

    基本上,你想做的是cd /path/to/sandbox然后 export PYTHONPATH=$(pwd)
    现在你在 python-path 中有你的应用程序的根目录。

    你只是在这个层面上对待一切。
    from app.main import MyClass <- 正确,应该可以工作!

    关于python - VSCode : How to import a module from my code path to another file in the same path?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58687714/

    相关文章:

    python - 有没有一种很好的方法来处理 Python 中的异常?

    python - Pandas 返回条件值

    python - 如何在 MySQL 中比较版本字符串 ("x.y.z")?

    java - 使用 VS Code 编译 Java,收到 "restriction on required library"错误消息

    python - VSCode 没有选择 ipykernel

    python - 如何在操作代码内的请求处理期间实例化 BaseHTTPRequestHandler 实例?

    python - python中的递归重新加载() "from some_module import *"

    javascript - VS Code 向我在 JavaScript 和 TypeScript 中的函数调用添加了奇怪的文本

    node.js - 是否可以在 Visual Studio Code 中分析 NodeJS 程序的内存使用情况

    terminal - VS Code刷新集成终端环境变量,而无需重新启动/注销