在VS Code中将Python linter与Docker结合使用

Den*_*nov 10 python lint pylint docker visual-studio-code

当Python和所有软件包安装在Docker容器中时,我正在尝试使Python linters在VS Code中工作。

我以前没有用过短绒。但是据我所知,短绒如何工作(至少在VS Code中),我需要将VS Code指向Python解释器,并在需要时设置包的路径。如果一切都安装在Docker容器中,这将成为一个问题。

我正在尝试仅使用Docker功能。我想到的是以下内容:

  1. 将安装的Python目录绑定到某个本地文件夹
  2. 从该文件夹中的VS Code中选择Python解释器
  3. 如果需要,以类似的方式添加已安装软件包的目录(但是我还没有达到这个阶段)

我尝试使用Docker文档中的Django示例项目来实现所有功能,因此我的文件如下所示

docker-compose.yml

version: '3'

services:
    db:
        image: postgres
    web:
        build: .
        command: python3 manage.py runserver 0.0.0.0:8000
        volumes:
        - .:/code
        - ./.vscode/python:/usr/local/lib/python3.7  # The problem is here
        ports:
        - "8000:8000"
        depends_on:
        - db
Run Code Online (Sandbox Code Playgroud)

Dockerfile

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
Run Code Online (Sandbox Code Playgroud)

requirements.txt

Django
psycopg2
Run Code Online (Sandbox Code Playgroud)

- ./.vscode/python:/usr/local/lib/python3.7注释行时,Django项目有效。但是,当我尝试以与安装文件夹相同的方式绑定安装Python文件/code夹时,我不仅没有本地可访问此文件夹的内容,而且Django项目停止工作。

是否可以通过这种方式挂载Python可执行文件?也许有更好的方法在使用VS Code和Docker时使用任意的Python linter?最好避免:

  • 在本地创建与Docker容器中相同的环境
  • 安装不允许使用任意lint的扩展

Evg*_*eny 3

Not the Docker side, just some VS code considerations

VS Code relies on two mechanisms for resolving python highlighing: environment and linter.

For environment you can check https://code.visualstudio.com/docs/python/environments, which basically says either python is availsble on the system in path, or pick virtual environmrnt you create, or provide a path to python executable in json.

https://code.visualstudio.com/docs/python/linting告诉使用 pip 安装 linter,可以从您配置的环境中运行,或者在 json 中提供 linter 的路径。

因此,看起来复制 VSCode python linting 所需的唯一东西是 python executabe、安装 pylint 和 vscode 的 json 配置。