Software-update: Python 3.7.16 / 3.8.16 / 3.9.16 / 3.10.9 / 3.11.1

Python logo (75 pix) Python is een objectgeoriënteerde programmeertaal die kan worden gebruikt om eenvoudige tot complexe, platformonafhankelijke applicaties te ontwikkelen. Het is in de jaren negentig ontworpen door Guido van Rossum, die destijds in Amsterdam voor het CWI werkte. Guido was als BDFL betrokken bij de ontwikkeling van Python. Hij heeft daarnaast voor Dropbox gewerkt, ging daarna met pensioen en toen dat niet echt beviel, ging hij aan de slag bij Microsoft. Er zijn nu updates van Python 3.7, 3.8, 3.9, 3.10 en 3.11 verschenen, die een verzameling van fouten en beveiligingsproblemen moeten verhelpen.

Python 3.11.1, 3.10.9, 3.9.16, 3.8.16, 3.7.16, and 3.12.0 alpha 3 are now available

Greetings! We bring you a slew of releases this fine Saint Nicholas / Sinterklaas day. Six simultaneous releases has got to be some record. There’s one more record we broke this time, you’ll see below. In any case, updating is recommended due to security content:

  • 3.7 - 3.12: gh-98739: Updated bundled libexpat to 2.5.0 to fix CVE-2022-43680 (heap use-after-free).
  • 3.7 - 3.12: gh-98433: The IDNA codec decoder used on DNS hostnames by socket or asyncio related name resolution functions no longer involves a quadratic algorithm to fix CVE-2022-45061. This prevents a potential CPU denial of service if an out-of-spec excessive length hostname involving bidirectional characters were decoded. Some protocols such as urllib http 3xx redirects potentially allow for an attacker to supply such a name.
  • 3.7 - 3.12: gh-100001: python -m http.server no longer allows terminal control characters sent within a garbage request to be printed to the stderr server log.
  • 3.8 - 3.12: gh-87604: Avoid publishing list of active per-interpreter audit hooks via the gc module.
  • 3.9 - 3.10 (already released in 3.11+ before): gh-97514: On Linux the multiprocessing module returns to using filesystem backed unix domain sockets for communication with the forkserver process instead of the Linux abstract socket namespace. Only code that chooses to use the “forkserver” start method is affected. This prevents Linux CVE-2022-42919 (potential privilege escalation) as abstract sockets have no permissions and could allow any user on the system in the same network namespace (often the whole system) to inject code into the multiprocessing forkserver process. This was a potential privilege escalation. Filesystem based socket permissions restrict this to the forkserver process user as was the default in Python 3.8 and earlier.
  • 3.7 - 3.10: gh-98517: Port XKCP’s fix for the buffer overflows in SHA-3 to fix CVE-2022-37454.
  • 3.7 - 3.9 (already released in 3.10+ before): gh-68966: The deprecated mailcap module now refuses to inject unsafe text (filenames, MIME types, parameters) into shell commands to address CVE-2015-20107. Instead of using such text, it will warn and act as if a match was not found (or for test commands, as if the test failed).

Python

Versienummer 3.7.16 / 3.8.16 / 3.9.16 / 3.1
Releasestatus Final
Besturingssystemen Windows 7, Linux, BSD, macOS, Solaris, UNIX, Windows Server 2008, Windows Server 2012, Windows 8, Windows 10, Windows Server 2016, Windows Server 2019, Windows 11
Website Python Insider
Download https://www.python.org/downloads/
Licentietype Voorwaarden (GNU/BSD/etc.)

Door Bart van Klaveren

Downloads en Best Buy Guide

24-12-2022 • 18:32

25

Submitter: DJskippy

Bron: Python Insider

Reacties (25)

25
23
15
2
0
6
Wijzig sortering
Python is een mooie programmeertaal, het is relatief eenvoudig om te leren, je kunt al snel een eenvoudig programma maken. Daarnaast zijn er ook veel libraries en voorbeelden op internet te vinden. Het is ook lovenswaardig dat oude versies nog security patches krijgen.
Alleen wat ik niet begrijp is dat ze voor oude versies geen installer meer meeleveren. Want ze raden je wel aan om te upgraden naar deze versies. Dus als je vastzit op versie 3.7.x dan is 3.7.9 de laatste met installer. En zul je dus zelf de aan de slag moeten om Python te builden. De instructies hiervoor staan in de Readme die bij de source code zitten.
Al met al: ik ben blij met Python, maar ik zou het ook kunnen waarderen als ze voor alle verschillende versies installers leveren.
Kijk eens op https://www.python.org/ftp/python/
Daar staat per versie alle compiled buildings op ;)
Ah, top! Ik had al zitten zoeken, maar kon nooit wat vinden. Ben ik blij mee. Bedankt! :)
En zul je dus zelf de aan de slag moeten om Python te builden.
Als je vaak moet switchen tussen Python versies moet je eens kijken naar Miniconda of pyenv. Hiermee kan je virtual environments aanmaken net zoals met venv, maar je kiest ook de Python versie in de environment (wat venv niet kan). Dan hoef je nooit meer zelf verschillende python versies builden/installeren. Pyenv werkt officieel wel enkel op mac/linux, er is een Windows port maar weet niet hoe goed die werkt. Maar Miniconda kan ik hiervoor zeker aanraden.

Ondanks dat Miniconda al een uitgeklede versie is van Anaconda blijft het een beetje overkill enkel voor het regelen van de Python versie omdat het ook een package manager is, maar die functionaliteit hoef je niet te gebruiken. Je kan conda gebruiken om een environment aan te maken met de gewenste python versie, en vervolgens de gewone pip/setuptools gebruiken.
Valt het niet te symlinken in je code?
Vast wel, maar dan loop je het risico van incompatabiliteit tussen pyhton en library versies.
Als extra tip kan ik PyCharm van JetBrains aanraden om in te werken. De community edition is gratis, heeft alleen geen webserver mogelijkheden voor Django of Flask. Hun implementatie van een venv en library versies per project is erg handig.
Ik heb altijd de professional versie gehad, dus ik kan niet uit ervaring spreken. Maar kun je geen webserver draaien vanuit de terminal?
Het gaat wel wat offtopic, maar dan kan eenvoudig met python zelf:
cd naar je project map
python -m http.server
wel vanuit de terminal maar niet in combinatie met de debug toolset.

Ik draai de professionele editie op werk maar de community thuis, binnen de pro versie kan je Django support voor je project enablen, waardoor je de terminal niet hoeft te gebruiken en breakpoints kan opgooien enzo.
Er is een module die volgens mij standaard is namelijk venv (volgens mij vanaf 3.3). Deze werkt op alle omgevingen waar Python beschikbaar is volgens mij. Op unix systemen zal hij symlinks gebruiken en op windows kopieert hij de bestanden gewoon.
Gewoon "python -m venv .venv" starten en dan (afhankelijk van het os) ". .venv/bin/activate" starten en je hebt een privé Python omgeving. Leuk detail is dat Visual Studio code dit gewoon herkent en het due heel eenvoudig mogelijk maakt om in verschillende Python omgevingen te ontwikkelen.

https://docs.python.org/3/library/venv.html
Ja, maar de beperking van venv is dat die de globaal geïnstalleerde python versie kopieert/symlinkt naar de virtual environment. Met tools zoals conda kan je eender welke python versie installeren in de virtual envionrment zonder dat deze globaal geïnstalleerd moet zijn (je installeert python net zoals een package in de venv, bv 'conda install python=3.9'.

Virtual environments, python versie management en package management zijn drie verschillende dingen. Venv is enkel een virtual environment manager, pyenv is een python versie manager, en conda is ze alle drie.
Dat is het vooral denk ik, libraries (en dus gemak). Zelf vind ik de taal niet super mooi ofzo, dan kijk ik liever richting Kotlin of Swift.
Mee eens, als eerste taal was het voor mij super. Maar god wat mis ik static typing nu ik andere talen gewend ben.
Dan ben je niet erg hard aan het zoeken.
  • Je kunt de installers gewoon op de officiële pagina vinden: https://www.python.org/downloads/
  • Als je op Windows zit te werken kan je ook Python uit de MS store halen. Versies zoals 3.7, 3.8, etc. worden naast elkaar aangeboden zodat je meerdere versies naast elkaar kan installeren. Ze worden dan automatisch naar de laatste versie van die releases geüpdatet.
  • Op Linux zou hij automatisch geüpdatet moeten worden door het package-management systeem (als je hem daaruit gehaald hebt). Voor Mac geldt hetzelfde als je het Brew package-management systeem gebruikt. Ook hier geldt dat ze naast elkaar kunnen staan.
  • Verder kan je ook nog op ieder besturingssysteem PIP gebruiken. Dit is Python's package-managment systeem wat standaard bij je Python installatie zit.

[Reactie gewijzigd door MaestroMaus op 22 juli 2024 23:29]

Wat is de reden om te blijven hangen op 3.7? Waarom niet de laatste gebruiken?
We hebben op het werk een stukje software draaien op een hele oude Windows 7 machine, deze hangt niet aan het internet. De laatste Python versie die hierop wil draaien is Python 3.7.x Anders zouden we allang over zijn op de nieuwste versie.
Windows 7 lijkt me een enorm security risico, advies: upgraden

Ondersteuning voor Windows 7 is gestopt op 14 januari 2020

[Reactie gewijzigd door marcelk1607 op 22 juli 2024 23:29]

Eventuele libraries die (nog) niet compitabel zijn met de nieuwere versies.
Als leek die Python moest installeren op mijn Windows laptop en Ubuntu server, waarom zijn er zoveel verschillende versies naast elkaar!?
Wat ik ervan begrijp is het een bewuste keuze van het ontwikkelteam om elk jaar een nieuwe versie uit te brengen. De oude versies worden nog 5 jaar lang van (security) patches voorzien. Daarom hebben ze nu dus 5 verschillende versies die naast elkaar bestaan.
Beetje jammer dat ik nét Python op m'n Raspberry heb ge-update.. Was niet echt simpel helaas. :+
Je snapt dat deze release al van 6 december is en hier op tweakers rijkelijk laat wordt gepost?

Op dit item kan niet meer gereageerd worden.