web-dev-qa-db-fra.com

Utilisation de Python linters avec Docker dans VS Code

J'essaie de faire Python linters pour fonctionner dans VS Code lorsque Python et tous les packages sont installés dans un conteneur Docker.

Je n'ai jamais utilisé de linters auparavant. Mais pour autant que je comprenne comment les linters fonctionnent (au moins dans VS Code), je dois pointer VS Code vers Python interprète et définir des chemins vers les packages si nécessaire. Et cela devient un problème si tout est installé dans le conteneur Docker.

J'essaie d'utiliser uniquement les fonctionnalités Docker. Ce que j'ai trouvé est le suivant:

  1. Lier le montage Python à un dossier local
  2. Sélectionnez Python dans VS Code à partir de ce dossier
  3. Si nécessaire, ajoutez des répertoires pour les packages installés de la même manière (mais je n'ai pas encore atteint cette étape)

J'ai essayé de tout implémenter en utilisant Django exemple de projet à partir des documents Docker, donc mes fichiers ressemblent à la suite

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

Le projet Django fonctionne lorsque la ligne - ./.vscode/python:/usr/local/lib/python3.7 est commenté. Mais quand j'essaye de lier le dossier mount Python de la même manière que /code dossier monté, non seulement le contenu de ce dossier n'est pas accessible localement, mais le projet Django cesse de fonctionner.

Est-il possible de monter Python exécutable de cette manière? Ou peut-être existe-t-il une meilleure façon d'utiliser des linters arbitraires Python tout en utilisant VS Code et Docker? être génial à éviter:

  • créer localement le même environnement que dans le conteneur Docker
  • installer des extensions qui ne permettent pas d'utiliser des linters arbitraires
10
Den Kasyanov

Pas le côté Docker, juste quelques considérations de code VS

VS Code s'appuie sur deux mécanismes pour résoudre python highlighing: environnement et linter.

Pour l'environnement, vous pouvez vérifier https://code.visualstudio.com/docs/python/environments , qui dit essentiellement soit python est disponible sur le système dans le chemin, ou choisissez l'environnement virtuel que vous créez, ou fournissez un chemin vers l'exécutable python dans json.

https://code.visualstudio.com/docs/python/linting indique d'installer linter avec pip, exécutable à partir de l'environnement que vous avez configuré ou fournissez un chemin vers linter dans json.

Il ressemble donc aux seules choses dont vous avez besoin pour répliquer VSCode python linting est python executabe, installation de la configuration pylint et json pour vscode).

4
Evgeny