Skip to content

Bug Report: cimg/python:x.y is unusable with venv caching  #250

@christophehenry

Description

@christophehenry

Describe the bug
Caching venv si common practice as documented. However, on cimg/python, python -m venv venv produces a virtual environment with a symlink to a fixed x.y.z python version (/home/circleci/.pyenv/versions/3.11.10/bin/python for instance on cimg/python:3.11.

This causes . venv/activate to fail with Error: [Errno 2] No such file or directory: 'venv/bin/python' as soon as the image is updated with a new minor Python version.

To Reproduce
Using the following config.yml:

jobs:
  build:
    docker:
      - image: cimg/python:3.11.4
    steps:
      - checkout
      - restore_cache:
          keys:
            - << pipeline.parameters.cache-version >>-{{ checksum "Pipfile.lock" }}
            - << pipeline.parameters.cache-version >>-
      - run:
          name: install dependencies
          command: |
            python -m venv /tmp/venv
            . /tmp/venv/bin/activate
            pip install pipenv
            pipenv install --dev
      - save_cache:
          paths:
            - /tmp/venv
          key: << pipeline.parameters.cache-version >>-{{ checksum "Pipfile.lock" }}

Change the used image from cimg/python:3.11.4 to cimg/python:3.11 and the CI should fail with the No such file or directory error.

Expected behavior
Caching the venv should not make the CI to suddenly fail as soon as the Python minor changes when using cimg/python:x.y.

Workarounds
Use cimg/python:x.y.z instead of cimg/python:x.y wich is inconveniant.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions