LoginSignup
0
0

More than 3 years have passed since last update.

Windows + Docker 環境で venv を使う[Python]

Last updated at Posted at 2020-10-25

エラー

通常の方法でコンテナにマウントして使おうとするとエラーが吐かれる。

$ python -m venv .venv
Error: [Errno 71] Protocol error: 'lib' -> '/app/.venv/lib64'

原因

venv の使用時にシンボリックリンクを発行していて、ローカルのマウント時にこれを共有してしまっていることが原因

解決方法

DockerでVolumeをマウントするとき一部を除外する方法 を使って、シンボリックリンクが張られる箇所とのマウントから除外する。

下記のコマンドでは、{作業ディレクトリ}/.venv/ 配下にシンボリックリンクが貼られることになるので、ここを除外する。

python -m venv .venv

docker-compose.yml の一部

version: "3.7"
services:
  app:
    ...
    volumes:
      - {作業ディレクトリ}/.venv/

docker-compose.yml

全体のサンプル

version: "3.7"
services:
  app:
    build: ./app/
    working_dir: /app
    volumes:
      - ./app:/app:cached
      - /app/__pycache__
      - /app/.venv/
      - /app/.tox/ # tox 用
    environment:
        - FLASK_ENV=development
    ports:
    - "5000:5000"

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0