web-dev-qa-db-ja.com

VSコードでDockerを使用してPython lintersを使用する

Python=そしてすべてのパッケージがDockerコンテナにインストールされているときにVSコードで動作するようにPythonリンターを作成しようとしています。

以前はリンターを使用していませんでした。しかし、リンターがどのように機能するかを理解している限り(少なくともVS Codeでは)、VS CodeをPythonインタープリターにポイントし、必要に応じてパッケージへのパスを設定する必要があります。 Dockerコンテナにインストールされます。

Docker機能のみを使用しようとしています。私が思いついたのは次のとおりです:

  1. マウントPythonディレクトリをローカルフォルダにバインドします
  2. そのフォルダーからVS CodeでPythonインタープリターを選択します
  3. 必要に応じて、同様の方法でインストール済みパッケージのディレクトリを追加します(ただし、まだこの段階に達していません)

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

Djangoプロジェクトは、行- ./.vscode/python:/usr/local/lib/python3.7がコメント化されている場合に機能します。しかし、マウントPythonフォルダーを/codeフォルダーと同じ方法でマウントしようとバインドすると、このフォルダーのコンテンツにローカルでアクセスできるだけでなく、Djangoプロジェクトが機能しなくなります。

Pythonこの方法で実行可能ファイルをマウントすることは可能ですか?または、VSコードとDockerを使用しているときに任意のPython lintersを使用するより良い方法がありますか?避けてください:

  • dockerコンテナーと同じ環境をローカルに作成する
  • 任意のリンターの使用を許可しない拡張機能のインストール
10
Den Kasyanov

Docker側ではなく、VSコードに関するいくつかの考慮事項

VSコードは、python highlighing:environmentおよびlinterを解決するための2つのメカニズムに依存しています。

環境については、 https://code.visualstudio.com/docs/python/environments を確認できます。これは、基本的にpythonがパス内のシステムで利用可能である、または、作成した仮想環境を選択するか、python jsonで実行可能ファイルへのパスを指定します。

https://code.visualstudio.com/docs/python/linting は、設定した環境から実行可能なpipを使用してlinterをインストールするか、jsonでlinterへのパスを提供するように指示します。

VSCode python linting is python executabe、installation of pylint and json configuration for vscode。

4
Evgeny