Python in macOS 13?
4 november 2022 - 10:56   
geplaatst door: Jakko W
Sinds ik macOS 13 geïnstalleerd heb, klopt er iets niet meer met Python:

% python
zsh: command not found: python
% python3
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

Van zoeken op het Internet werd ik niet heel veel wijzer, behalve dat het lijkt dat python 2.x niet meer bij macOS geleverd wordt, maar wel een oude 3.x — dat zou verklaren dat er alleen een python3 op m’n computer staat, maar zoals je hierboven kunt zien weigert die dienst. Dat zal wel zijn omdat er überhaupt geen /Library/Developer/CommandLineTools/usr/bin/ is, laat staan een bestand daarin.

Ik heb alleen geen idee wat ik hieraan zou moeten doen om het weer werkend te krijgen. Ik schrijf af en toe een script in Python, maar heb me nog nooit hoeven te verdiepen in wat te doen als de interpreter zelf niet werkt.


Edit: wacht, er is ook een python3.9:

% python3.9
Python 3.9.14 (main, Sep  6 2022, 23:29:09)
[Clang 13.1.6 (clang-1316.0.21.2.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

… en die werkt wel.

Dan wordt de vraag anders: hoe krijg ik de computer zover dat m’n scripts die beginnen met de gebruikelijke

#! /usr/bin/env python
weer gaan werken?
Python in macOS 13?
4 november 2022 - 12:41    reactie #1
geplaatst door: Jakko W
Dit lijkt nu opgelost te zijn … Ik startte daarnet een Automator-taak waarin een programma aangeroepen wordt dat ik met Homebrew geïnstalleerd had, daaruit kwam een foutmelding over dat m’n Python3-installatie niet volledig was, en ook werd er dezelfde /Library/Developer/CommandLineTools/usr/bin/xcrun in genoemd.

Nu echter met meer uitleg, met onder meer de tip om de installatie via Homebrew opnieuw te proberen. Dát zei dan weer onder meer:

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
Error: python@3.10: the bottle needs the Apple Command Line Tools to be installed.
  You can install them, if desired, with:
    xcode-select --install

en na dat laatste gedaan te hebben, start het commando python3 wél een 3.9-interpreter, maar nu 3.9.6 i.p.v. 3.9.14 zoals vanochtend. Maar dat zal mij eigenlijk worst wezen, ik wil gewoon een werkende Python en maal niet echt om welke subsubversie dat precies is :)

Wat nog wel blijft is dat scripts die beginnen met

#! /usr/bin/env python
de foutmelding geven:

env: python: No such file or directory
Python in macOS 13?
4 november 2022 - 14:49    reactie #2
geplaatst door: MacFrankie
Achter "#!" zet je normaal de shell neer, die gewoonlijk 'zsh' of 'ksh' is, welke in de /usr/bin directory staat. Nu start je 'env', welke probeert 'python' te lezen. Is dit de bedoeling? Zorg er dan voor dat python in een bekend pad staat, of geef het hele pad op.
Op mijn werk heb ik al Windows, thuis wil ik geen systeembeheerder meer zijn!
Python in macOS 13?
4 november 2022 - 19:28    reactie #3
geplaatst door: Jakko W
Bij mijn weten was de aangeraden manier bij Python altijd om de interpreter via /usr/bin/env aan te roepen, en niet rechtstreeks als /usr/bin/python (of, nu in mijn geval blijkbaar, /usr/bin/python3), en dat blijkt nog zo te zijn.

Nu ik je antwoord en die pagina lees, snap ik nu wel waarom de scripts niet meer werken: /usr/bin staat natuurlijk wel in $PATH, maar er is geen /usr/bin/python om aan te roepen. Daardoor steekt er weer een ander probleem de kop op … De voor de hand liggende oplossing lijkt mij:
% sudo ln -s /usr/bin/python3 /usr/bin/pythonmaar dat mag niet van SIP:
ln: /usr/bin/python: Operation not permitted
Zucht … goed, dan
% ln -s /usr/bin/python3 /usr/local/bin/pythonDat lukt, want die laatste directory staat ook in $PATH en daar mag je wel in schrijven. Maar als ik dan Python probeer te starter wordt het nog vreemder:
% python
xcode-select: Failed to locate 'python', requesting installation of command line developer tools.
en komt er tegelijk een venster omhoog met de vraag of ik de command-line tools wil installeren. Volgens mij had ik dat al gedaan, maar goed, nog maar een keer. Omdat dit schijnbaar een minuut of tien duurt, ga ik dat eerst maar even afwachten.


Wat (minder dan tien) minuten later …

OK, installatie gelukt … Ik typ dus nog maar eens `python` in, en … krijg weer de vraag of ik de command-line tools wil installeren. Nee, dat wil ik niet, dat heb ik net gedaan en dat deed blijkbaar niks. Dus wat als ik nu de symlink in /usr/local/bin weer eens wegdoe, werkt het dan? Nee, ook niet, dan zegt hij dat er geen commando met de naam python is …

Dit gaat in een kringetje rond :(
Python in macOS 13?
4 november 2022 - 21:20    reactie #4
geplaatst door: MacFrankie
Een andere optie is het draaien van Python in MS Visual Studio Code (let op Code, zonder is een ander product).
Op mijn werk heb ik al Windows, thuis wil ik geen systeembeheerder meer zijn!
Python in macOS 13?
5 november 2022 - 09:58    reactie #5
geplaatst door: GeorgeM
Ik werk nooit met Python, maar is de oplossing voor jouw probleem niet hier te vinden?

https://docs.python.org/3/using/mac.html

Bijvoorbeeld dit:

Citaat
To run your script from the Finder you have two options:

  • Drag it to PythonLauncher
  • Select PythonLauncher as the default application to open your script (or any .py script) through the finder Info window and double-click it. PythonLauncher has various preferences to control how your script is launched. Option-dragging allows you to change these for one invocation, or use its Preferences menu to change things globally.
Python in macOS 13?
5 november 2022 - 11:02    reactie #6
geplaatst door: Jakko W
Dat zouden oplossingen zijn, ware het niet dat ik gewoon de scripts wil draaien zoals altijd: in de terminal. Ik heb altijd een terminalvenster openstaan dat ik regelmatig gebruik voor allerlei van dit soort dingen die makkelijker in de terminal gaan dan in de Finder. Om scripts naar applicaties te moeten slepen, of erop gaan dubbelklikken, is voor mij een onhandige manier van werken t.o.v. even een deel van de naam intikken en op Tab drukken.

Maar als ik op de genoemde pagina kijk, lees ik:
Citaat
The Apple-provided build of Python is installed in /System/Library/Frameworks/Python.framework and /usr/bin/python, respectively.
… en dat is niet waar op mijn computer. Dat /usr/bin/python niet bestaat had ik al ontdekt, maar /System/Library/Frameworks/Python.framework blijkt ook opvallend afwezig te zijn …

Er is dus duidelijk iets mis op mijn computer, maar waarom? En belangrijker: hoe los ik het op?

En voor de zekerheid heb ik dit net nog even gecontroleerd op een andere Mac hier in huis die ook recent voorzien is van macOS 13 (maar waar nooit zelfgeschreven scripts op gedraaid worden), en ook daar zijn /usr/bin/python en /System/Library/Frameworks/Python.framework niet aanwezig.

Laat ik maar eens beginnen met Xcode vanuit de App Store te installeren. Wellicht dat dat iets oplost.
Python in macOS 13?
5 november 2022 - 11:07    reactie #7
geplaatst door: puk1980
https://discussions.apple.com/thread/254320722

Citaat
python3  is not included in Ventura, but it can be added by installing the command-line tools with:

xcode-select --install
(https://osxdaily.com/2014/02/12/install-command-line-tools-mac-os-x/), and after installation, it has the benefit of being updated with macOS updates

En https://freegistutorial.com/install-python-3-on-macos-ventura/
Certified Terminal Guru.
Python in macOS 13?
5 november 2022 - 19:21    reactie #8
geplaatst door: Jakko W
https://discussions.apple.com/thread/254320722
Inderdaad, dat doet het, maar zoals ik al uitlegde: al je scripts die python aanroepen in plaats van python3 (en dat is, gok ik, het overgrote deel) werken dan nog steeds niet … Een oplossing daarvoor heb ik nog altijd niet gevonden.
Python in macOS 13?
5 november 2022 - 19:42    reactie #9
geplaatst door: puk1980
... al je scripts die python aanroepen in plaats van python3 werken dan nog steeds niet … Een oplossing daarvoor heb ik nog altijd niet gevonden.

https://osxdaily.com/2022/02/15/make-python-3-default-macos/

Citaat
Add the following alias at the bottom of the .zshrc file:

alias python=/usr/local/bin/python3
Certified Terminal Guru.
Python in macOS 13?
6 november 2022 - 10:42    reactie #10
geplaatst door: Jakko W
Natuurlijk, waarom vergat ik dat ik ook gewoon een alias ervoor kan definiëren? Bedankt :)