Code Monkey home page Code Monkey logo

Comments (7)

wyardley avatar wyardley commented on June 25, 2024 1

FWIW, I think the regular Circle images are already getting the 2020 version of pipenv, for better or for worse:

LM-LTH-40012925~% docker run circleci/python:3.7 pipenv --version    
pipenv, version 2020.6.2

so, to me, jumping backwards on the cimg ones wouldn't make a ton of sense?

For our workflows, we've seen one or two issues, but the new version also fixes a bunch of stuff

from cimg-python.

wyardley avatar wyardley commented on June 25, 2024 1

I do kind of wonder what the benefit of using pyenv in a container that's already using a single Python version is... unless it makes using the same Dockerfile for all the versions that much easier -- from a simplicity standpoint, might be easier / better to install at system level, and then there's less likely to be weird path issues.

I am seeing binaries installed from pipenv missing from the pyenv path when I tried switching to this, but maybe I need to do some additional pyenv configuration in the pipenv config...

from cimg-python.

felicianotech avatar felicianotech commented on June 25, 2024

Great question. This image uses pyenv to obtain the Python version. In theory, this shouldn't interfere with Pipenv right?

I'll do some testing and research and see if we can add this in before this image goes stable/GA, which is soon.

from cimg-python.

wyardley avatar wyardley commented on June 25, 2024

Right - they’re supposed to work ok together, and I think newer pipenv may even work with pyenv.

FWIW, just doing pip install pipenv (without sudo) seems to work fine, so it may be as simple as adding it to the pip packages that get installed in the base image.

Happy to PR it but wasn’t sure exactly where that goes in the stuff that generates the Dockerfiles and whether to commit the results as well

from cimg-python.

dsayling avatar dsayling commented on June 25, 2024

Hey there! I've been thinking about this problem myself. There are a few things we just need to make sure are clear and we discuss before making the change. I do believe its fair to assume that pipenv should be the default packaging tool available in the base image since pypa officially recommends pipenv.

Should we hardcode a version of pipenv to install?
Pipenv has had issues with releases breaking installs. The last version released before 2020* was 2018*. Two years was quite a while and who knows what an unexpected update will cause

Along with pipenv will come a few other packages - do their versions matter / will they update ok without issue?
Currently there are no python packages in pyenv site-packages in the images (except for pip). In the 3.7 image today if I install pipenv (at version 2020.6.2), I also install these packages. Should we set their versions as well?

  • appdirs-1.4.4
  • certifi-2020.4.5.2
  • distlib-0.3.0
  • filelock-3.0.12
  • importlib-metadata-1.6.1
  • six-1.15.0
  • virtualenv-20.0.23
  • virtualenv-clone-0.5.4
  • zipp-3.1.0

from cimg-python.

dsayling avatar dsayling commented on June 25, 2024

Definitely not proposing we go backward! Sorry for not being clear. I'm basically wondering if the change should be
pip install pipenv or pip install pipenv==2020.6.2 or lock all the dependent pip pacakges for pipenv into a requirements file with every version hardcoded. I'm not quite sure what the planned release cadence for https://github.com/pypa/pipenv is going to be. Without hardcoding the version - unexpected new versions of pipenv or the dependent packages may be installed when the image is rebuilt. Just trying to discuss the risk to the change long term.

from cimg-python.

dsayling avatar dsayling commented on June 25, 2024

FWIW - if you want to make the change and feel comfortable making the change to the https://github.com/CircleCI-Public/cimg-python/blob/master/Dockerfile.template. The README should provide guidance on testing the change and submitting the PR.

from cimg-python.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.