Ausführung von python application mit apple script perssion denied

nieselfriem

Mitglied
Thread Starter
Dabei seit
14.03.2020
Beiträge
2
Reaktionspunkte
0
Hallo,

ich diesem Thread habe ich mich über das Thema schlau gemacht, wie ich python Anwendungen mittels einem Skript im finder oder Launchpad starten könne. Das habe ich nun wie folgt probiert

Code:
do shell script "/Users/niesel/Documents/python/tool/start.sh"

Code:
#!/bin/bash
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3 /Users/niesel/Documents/python/tool/main.py

Wenn ich das start.sh in der shell ausführe, startet das Programm ohne Probleme. Wenn ich es jedoch mit Applescript ausführe bekomme ich das Problem, dass er im logs-Verzeichniss der Anwendung permssion-Probleme hat.

Code:
Ergebnis:
"[32m2020-03-14T20:56:14.563499+0100[0m [31m[1mAn error has been caught in function '<module>', process 'MainProcess' (1565), thread 'MainThread' (140734827943360):[0m
[33m[1mTraceback (most recent call last):[0m

> File \"[32m/Users/niesel/Documents/python/tool/[0m[32m[1mmain.py[0m\", line [33m30[0m, in [35m<module>[0m
    [1mmain[0m[1m([0m[1m)[0m
    [36m-> [0m[36m[1m<function main at 0x113071510>[0m

  File \"[32m/Users/niesel/Documents/python/tool/[0m[32m[1mmain.py[0m\", line [33m17[0m, in [35mmain[0m
    [1minit_logger[0m[1m([0m[1m)[0m
    [36m-> [0m[36m[1m<function init_logger at 0x1030a2e18>[0m

  File \"[32m/Users/niesel/Documents/python/tool/[0m[32m[1mmain.py[0m\", line [33m13[0m, in [35minit_logger[0m
    [1mlogger[0m[35m[1m.[0m[1madd[0m[1m([0m[36m\"logs/tool.log\"[0m[1m,[0m [1mrotation[0m[35m[1m=[0m[36m\"500 MB\"[0m[1m)[0m
    [36m|      -> [0m[36m[1m<function Logger.add at 0x112b33268>[0m
    [36m-> [0m[36m[1m<loguru.logger handlers=[(id=0, level=10, writer=<stderr>), (id=1, level=20, writer=<stderr>), (id=2, level=10, writer=<stdou...[0m

  File \"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/loguru/_file_sink.py\", line 55, in __init__
    self._initialize_file(rename_existing=False)
    |    -> <function FileSink._initialize_file at 0x112b18d08>
    -> <loguru._file_sink.FileSink object at 0x111f75668>
  File \"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/loguru/_file_sink.py\", line 77, in _initialize_file
    os.makedirs(new_dir, exist_ok=True)
    |  |        -> '/logs'
    |  -> <function makedirs at 0x103237e18>
    -> <module 'os' from '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/os.py'>
  File \"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/os.py\", line 220, in makedirs
    mkdir(name, mode)
    |     |     -> 511
    |     -> '/logs'
    -> <built-in function mkdir>

[31m[1mPermissionError[0m:[1m [Errno 13] Permission denied: '/logs'[0m"

Ich habe spassenshalber mal das logs-Verzeichniss auf 777 gesetzt. Aber das hat nichts gebracht. Ich verstehe es irgendwie nicht

VG niesel
 
Ich bin mir gerade nicht sicher was genau du machst.
Sehe ich das richtig, dass du nicht in den Automator gehst, eine App erstellst und dort via "Run Shell Script" direkt deine .sh Datei eintippst?
Das würde ich zuerst probieren. Nimmt viel Indirektion raus und behebt damit eventuell schon das Problem.
Wenn das nicht geht, dann würde ich halt anfangen systematisch vorzugehen: installiere dir via brew/macports mal ein nicht-system Python. Daraus kannst du dann schließen, ob etwas mit der Python Installation nicht stimmt.

Dass in diesem Output Escapecodes der Shell sind ist auch merkwürdig und sollte so eigentlich nicht sein. Hier ist also ggf. auch Potential mit der Fehlersuche fortzufahren.
 
du kannst auch etwas optimierter das script übergehen:
Code:
do shell script "/Library/Frameworks/Python.framework/Versions/3.6/bin/python3 /Users/niesel/Documents/python/tool/main.py"

Dass in diesem Output Escapecodes der Shell sind ist auch merkwürdig und sollte so eigentlich nicht sein. Hier ist also ggf. auch Potential mit der Fehlersuche fortzufahren.

sind das nicht einfach farbcodes?
 
Ich dachte das Rootverzeichnis ist eh irgendwie geschützt seit Catalina?

Sicher, dass du wirklich nach /logs schreiben willst, und die passenden Rechte dazu hast als Skriptausführer den Ordner anzulegen, oder nicht vielleicht irgendeine system env Variable leer ist, da du das Skript jetzt nicht als dein User ausführst?

Was steht denn in dem Pythonskript? Also ausgeführt wird es ja anscheinend, ...
 
Achso, das ist ein 3rd Party Logger... ich hatte den Output gar nicht angesehen, weil von der Form her nicht wie Python wirkend.
Ja gut, dann ist das Problem halt wohl, dass "/logs" ggf. ein Defaultpfad des Loggers ist den man auf was beschreibbares ändern sollte.

Edit: nein, der Pfad hat bei diesem loguru keinen Defaultwert. Das ist usergegeben und damit ein Usererror.
 
Zurück
Oben Unten