【问题标题】:Adding source root to Python project structure VS Code将源根添加到 Python 项目结构 VS Code
【发布时间】:2020-07-06 12:24:20
【问题描述】:

这个问题似乎已经很常见了,但是在搜索了 stackoverflow、reddit 和 vscode 文档之后,我迫切希望找到答案。我想我会在这里再试一次。在 PyCharm 中,您可以转到“项目结构”并添加源根文件夹以解决相关导入和 pylint 问题,如下所述: https://www.jetbrains.com/help/pycharm/configuring-project-structure.html.

有没有办法在 VSCode 中实现这个功能?

【问题讨论】:

    标签: python visual-studio-code pycharm vscode-settings


    【解决方案1】:

    听起来您在使用"python.autoComplete.extraPaths" setting,它允许您列出一组路径以查找用于自动完成的包。至于 Pylint,setting up your PYTHONPATH via a .env file 可能就是您所追求的。

    【讨论】:

      【解决方案2】:

      我只是浪费了 2 个小时试图让 pylint 识别从本地路径导入的模块,但终于让它工作了。

      我将根添加到“python.autoComplete.extraPaths”,但这只会影响自动完成,而不影响 pylint!

      为此,我必须在 virtualenv 中安装项目。

      首先,确保您指向 virtualenv 中的解释器。这是我的 VSCODE 工作区设置的样子:

      {
        "python.linting.pylintEnabled": true,
        "python.pythonPath": "/home/andrew/virtualenvs/eks/bin/python",
        "python.linting.pylintPath": "/home/andrew/virtualenvs/eks/bin/pylint",
        "python.autoComplete.extraPaths": ["/other/repos/eks"],
        "python.linting.pylintArgs": [
          "--disable=C0111", // missing docstring
          "--load-plugins=pylint_django"
        ],
      }
      

      其次,在 virtualenv 处于活动状态的情况下,将当前目录安装为符号链接,如下所示:

      pip install -e .
      

      要使项目可安装,您需要一个 setup.py 文件,该文件只需如下所示:

      from setuptools import setup
      
      setup()
      

      当然,您可以使用带有 setup.cfg 文件的设置机制来控制依赖关系,但如果您遇到此问题,那么您很可能没有这样做在你的项目中,所以以上是让它工作的最低要求。

      当然,这一切都说得通。 pylint 是如何指向你的 virtualenv 中的 python 解释器应该知道其他地方的 rot 目录的?

      【讨论】:

        【解决方案3】:

        这是我在这个问题上搜索了很长时间后发现的。

        • 对于简单的工作空间,可以在设置中搜索extraPath,并将相对路径添加到“Python > 分析:额外路径”。假设是最新版本的 vscode 和 pylance。
        • 对于多根工作区,事实证明微软仍在改进甚至争论如何获取 PYTHONPATH(请参阅https://github.com/microsoft/pylance-release/issues/159)。如果您想在一个文件夹中引用其他文件夹中的模块,我个人仍然更喜欢前面提到的extraPath --- 只是这次您将放入当前文件夹的相对路径(在磁盘上),例如../<your another folder>/src/python。并且设置在“文件夹设置”而不是“用户”或“工作区”设置中。这也必须为每个根文件夹完成。

        希望以上内容有所帮助。

        【讨论】:

          猜你喜欢
          • 2012-05-24
          • 1970-01-01
          • 2021-07-04
          • 2019-01-06
          • 1970-01-01
          • 2016-08-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多