上下文:

  • Windows 10+VS Code+WSL2
  • WSL2使用Ubuntu 20.04,所有的开发环境都安装在发行版中
  • 在发行版上,我使用pyenv创建虚拟环境
  • 我的工作区有一个包含子项目文件夹 struct 的项目,我需要为一个特定子项目配置pylint
  • 我使用的是python3.10,并且已经在虚拟环境中安装了pylint
  • 虚拟环境文件夹低于~/venvs/virtualenv
  • 我已经在VS代码上 Select 了指向~/venvs/virtualenv个python二进制文件的python解释器

文件夹 struct :

main_project/
| .vscode/
| | settings.json <----- B
| sub_projects/
| | proj_1/
| | proj_2/
| | | src/
| | | | app/
| | | | | __init__.py 
| | | | | api/
| | | | | | rest/
| | | | | | | __init__.py <--- A
| | | | | services/
| | | | | | __init__.py
| | | | | | database.py

我的问题是:

  • 代码运行没有问题,但pylint在A中抱怨以下导入: from app.services import database
  • 错误为Unable to import 'app.services' pylint(import-error)

这些是我当前的settings.json文件(树上的B):

{
    "editor.formatOnSaveMode": "file",
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
        "source.organizeImports": true
    },
    "python.formatting.provider": "autopep8",
    "python.linting.pylintEnabled": true,
    "python.linting.enabled": true,
}

Question 我应该如何配置settings.json才能让pylint识别导入? 除了代码运行之外,甚至连自动完成都在工作,这表明python解释器设置正确,因此问题似乎出在pylint上.

推荐答案

找到以工作区为根目录的Vscode标识文件.您可以使用以下方法导入方法:

  1. 使用代码from sub_projects.proj_2.src.app.services import database

  2. 在项目的根目录下放置一个.env文件,它会将您的源目录添加到PYTHONPATH:

    PYTHONPATH=/SUB_PROJEMS/PROJ_2/src/

小贴士: 您可以将以下代码添加到您的settings.json中,也可以在此处更改文件名.

"python.envFile": "${workspaceFolder}/.env" // for example "python.envFile": "${workspaceFolder}/dev.env"

Python相关问答推荐

Python中的负前瞻性regex遇到麻烦

如何在Python中使用io.BytesIO写入现有缓冲区?

提取两行之间的标题的常规表达

删除任何仅包含字符(或不包含其他数字值的邮政编码)的观察

为什么这个带有List输入的简单numba函数这么慢

更改键盘按钮进入'

如何使用数组的最小条目拆分数组

如何让这个星型模式在Python中只使用一个for循环?

Odoo 16使用NTFS使字段只读

使用NeuralProphet绘制置信区间时出错

SQLAlchemy bindparam在mssql上失败(但在mysql上工作)

在Python中调用变量(特别是Tkinter)

在极中解析带有数字和SI前缀的字符串

下三角形掩码与seaborn clustermap bug

Pandas—MultiIndex Resample—我不想丢失其他索引的信息´

数据框,如果值在范围内,则获取范围和

获取git修订版中每个文件的最后修改时间的最有效方法是什么?

如何获取包含`try`外部堆栈的`__traceback__`属性的异常

PYTHON中的selenium不会打开 chromium URL

具有不匹配列的2D到3D广播