在VS Code中转到本地python包的定义

时间:2018-08-27 09:04:26

标签: python visual-studio-code

我正在尝试从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_pkgcd ~/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'

我在具有python 3.6.4的macOS上使用VS Code Version 1.26.1 (1.26.1)

我的工作空间设置:

{
    "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 :(得分:0)

我发现了问题:

我在根__init__.pymy_pkg目录中都有my_pkg/my_pkg。因此,VS Code选择根my_pkg作为引用对象。

因此,要解决此问题,我只需要删除my_pkg/__init__.py

相关问题