VSCode: Как импортировать модуль из моего пути кода в другой файл по тому же пути? - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь отладить свое приложение на Python с помощью VSCode. Но я не могу правильно настроить свою среду. Попытка импортировать класс из одной папки в моем исходном пути к другой, выдает мне следующее сообщение:

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-битный
  • Приведенный выше код прекрасно работает в 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.

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Посмотрите здесь

в принципе, то, что вы хотите сделать, это cd /path/to/sandbox затем export PYTHONPATH=$(pwd)

Теперь, когда у вас есть корневой каталог вашего приложения впуть питона.

Вы просто относитесь ко всему на этом уровне.

from app.main import MyClass <- правильно и должно работать! </p>

0 голосов
/ 04 ноября 2019

Позвольте мне попытаться помочь вам. Если вы хотите импортировать файл, которого нет в текущем каталоге, сделайте это следующим образом.

from . import main

Для второй проблемы посетите эту ССЫЛКА

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...