Перейти к определению для локальных пакетов Python в VS Code - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь переключиться с PyCharm на VS Code для написания кода на Python. Но у меня проблемы с навигацией (особенно Go to definition) по моему коду.

Моя структура проекта выглядит примерно так:

- my_pkg
    setup.py
    README.md
    - my_pkg
        - celery
            tasks.py
        - foo 
            main.py

в my_pkg/my_pkg/celery/tasks.py Мне нужно func_bar из my_pkg/my_pkg/foo/main.py. Поэтому я импортирую это так:

from my_pkg.foo.main import func_bar

Go to definition отлично работает в PyCharm. Я также устанавливаю my_pkg локально, как это: cd ~/my_pkg; pip install -e .

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

from my_pkg.my_pkg.foo.main import func_bar

или

from ..my_pkg.foo.main import func_bar

Проблема : В этом случае Go to definition работает, но мой код больше не работает.

Например, в ipython:

from my_pkg.my_pkg.foo.main import func_bar повышает ModuleNotFoundError: No module named 'my_pkg.mypkg'

Я использую VS Code Version 1.26.1 (1.26.1) на macOS с python 3.6.4.

Мои настройки рабочего пространства:

{
    "python.pythonPath": "${workspaceRoot}/virtual/bin/python",
    "python.venvPath": "${workspaceRoot}/virtual",
    "python.autoComplete.extraPaths": [
        "${workspaceRoot}/virtual/lib/python3.6/site-packages"
    ],
    "python.unitTest.pyTestEnabled": true
}

И он отлично работает для внешних установленных пакетов через pip.

1 Ответ

0 голосов
/ 27 августа 2018

Я нашел проблему:

У меня было __init__.py как в корневом каталоге my_pkg, так и в каталоге my_pkg/my_pkg.Поэтому VS Code выбирает корень my_pkg в качестве референта.

Поэтому, чтобы решить эту проблему, мне просто нужно было удалить my_pkg/__init__.py.

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