Supportvragen Mac > Programmeren in bijvoorbeeld C(++), Cocoa, Java, BASIC, en Swift

Python in macOS 13?

(1/3) > >>

Jakko W:
Sinds ik macOS 13 geïnstalleerd heb, klopt er iets niet meer met Python:


--- Code: ---% 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

--- Einde van code ---

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:


--- Code: ---% 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.
>>>

--- Einde van code ---

… en die werkt wel.

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


--- Code: ---#! /usr/bin/env python
--- Einde van code ---

weer gaan werken?

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:


--- Code: ---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
--- Einde van code ---

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


--- Code: ---#! /usr/bin/env python
--- Einde van code ---

de foutmelding geven:


--- Code: ---env: python: No such file or directory
--- Einde van code ---

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.

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:

--- Code: ---% sudo ln -s /usr/bin/python3 /usr/bin/python
--- Einde van code ---
maar dat mag niet van SIP:

--- Code: ---ln: /usr/bin/python: Operation not permitted
--- Einde van code ---

Zucht … goed, dan

--- Code: ---% ln -s /usr/bin/python3 /usr/local/bin/python
--- Einde van code ---
Dat 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:

--- Code: ---% python
xcode-select: Failed to locate 'python', requesting installation of command line developer tools.
--- Einde van code ---
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 :(

MacFrankie:
Een andere optie is het draaien van Python in MS Visual Studio Code (let op Code, zonder is een ander product).

Navigatie

[0] Berichtenindex

[#] Volgende pagina

Naar de volledige versie