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

时间:2018-09-15 17:18:45

标签: python docker visual-studio-code lint pylint

当Python和所有软件包都安装在Docker容器中时,我正在尝试使Python linter在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

Dockerfile

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

requirements.txt

Django
psycopg2

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

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

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

1 个答案:

答案 0 :(得分:3)

不是Docker方面,只是一些VS代码注意事项

VS Code依赖于两种解决python highlighing的机制:环境和短绒。

对于环境,您可以检查https://code.visualstudio.com/docs/python/environments,它基本上表示python在路径中的系统上可用,或者选择您创建的虚拟环境,或者在json中提供python可执行文件的路径。

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

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