Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Installing Python 3.10 in Docker Image?

I am attempting to install Python3.10 on a Ubuntu v20.04 Docker Image. I am using the line:

FROM nrel/energyplus:23.2.0

RUN export DEBIAN_FRONTEND=noninteractive TZ=US && \
    apt-get update && \
    apt-get -y install python3.10 python3-pip

which seems to run properly, and I get a successful Image.

However when I run the Container, I appear to only have Python3.8 installed?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

# python3 --version
Python 3.8.10

# python3.10 --version
/bin/sh: 3: python3.10: not found

# whereis python3
python3: /usr/bin/python3.8 /usr/bin/python3 /usr/bin/python3.8-config /usr/lib/python3 /usr/lib/python3.8 /usr/lib/python3.9 /etc/python3.8 /etc/python3 /usr/local/lib/python3.8 /usr/include/python3.8 /usr/share/python3

How can I install Python 3.10 in this case?

>Solution :

Take a closer look at the output from apt-get when you attempt to install python3.10:

root@3d5f9653d655:/# apt-get -y install python3.10
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'libqgispython3.10.4' for regex 'python3.10'
Note, selecting 'libpython3.10-stdlib' for regex 'python3.10'
libqgispython3.10.4 is already the newest version (3.10.4+dfsg-1ubuntu2).
0 upgraded, 0 newly installed, 0 to remove and 23 not upgraded.

It treats python3.10 like a regular expression, and matches it against libqgispython3.10.4. There is no python3.10 package available, and if you were to use the apt command instead of apt-get you would get a better error message:

root@3d5f9653d655:/# apt install python3.10
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package python3.10
E: Couldn't find any package by glob 'python3.10'

This behavior is documented in the apt-get man page:

If no package matches the given expression and the expression contains one of
., ? or * then it is assumed to be a POSIX regular expression, and it is
applied to all package names in the database. Any matches are then installed
(or removed). Note that matching is done by substring so lo.* matches
how-lo and lowest. If this is undesired, anchor the regular expression with
a ^ or $ character, or create a more specific regular expression.

It’s a dumb behavior, particularly because packages name legitimately contain . characters, but we’re apparently stuck with it.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading