将源根目录添加到Python项目结构VS Code

时间:2020-03-25 21:26:40

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

似乎这个问题已经有一段时间了,但是在仔细检查stackoverflow,reddit和vscode文档之后,我很想找到答案。我以为我会在这里再拍一张。在PyCharm中,您可以转到“项目结构”并添加源根文件夹以解决相对的导入和pylint问题,如下所述: https://www.jetbrains.com/help/pycharm/configuring-project-structure.html

是否可以在VSCode中实现此功能?

3 个答案:

答案 0 :(得分: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目录?

答案 1 :(得分:0)

听起来好像您在"python.autoComplete.extraPaths" setting之后,您可以通过它列出一系列路径来查找要自动完成的软件包。至于Pylint,setting up your PYTHONPATH via a .env file可能就是您所追求的。

答案 2 :(得分:0)

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

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

希望以上内容有所帮助。