Closed 517qf closed 6 years ago
bitte vorerst ignorieren.
Ich habe gerade erst Diskussions-Thread auf zettelkasten.de hierzu entdeckt und da steht auch einiges zu unter linux laufen lassen drin.
Ich werde morgen mit diesem neuen Ideen mein Glück versuchen und hoffe, das Problem selbst doch noch lösen zu können. Sollte ich doch scheitern, nerve ich nochmal ...
Ich verstehe den Grund gerade nicht, warum versuchen, ein Standalone Executable zu generieren, wenn man es einfach mit python3 sublimeless_zk.py
starten kann, sofern man die Abhängigkeiten installiert hat, ist alles hier beschrieben: https://github.com/renerocksai/sublimeless_zk#alternative-linux-installation.
Momentan sind das nämlich "meine" Build Scripts, die sind nur auf GitHub, weil ich über push/pull mit den Build-VMs synce; es ist noch zu früh, um jetzt auch noch das Packagen auf allen möglichen Plattformen zu supporten.
Ich verwende Anaconda und empfehle es, weil es einen unabhängig von einem (veralteten) System-Python macht (was aber meistens eh kein Problem ist), man kann es auch mehrmals installieren und sich so verschiedene Konfigurationen zusammenstellen, die über Python selbst hinausgehen, wie zB pandoc, etc. Kommt mit Anaconda auch mitgebundelt.
Davon unabhängig: Für den Linux Build musste ich PyInstaller patchen. Die aktuelle Anaconda-Version von PyInstaller, zumindest. Die Patches sind im patches
Ordner zu finden.
Sonst generiert PyInstaller keine dist, weil er die Python-Libs zT nicht findet. Was er auf Deinem System nicht findet, kann ich jetzt nicht sagen.
SyntaxError: invalid syntax
sieht mir aber trotzdem sehr danach aus, als würde da python2 zum Einsatz kommen, wahrscheinlich wegen des python bundle_version.py
. Der Grund für python
ist reine Gewohnheit. Bei mir ist Python immer python
, und ich kümmere mich darum, dass das richtige Python3 im Pfad ist. ZB, indem ich in der Build-VM Anaconda3 installiere und in einem Conda-Environment arbeite.
Kurz und knapp waren das jetzt alle Tipps, die ich so schnell geben konnte. Aber ich möchte nochmal betonen, dass
a) gerade auf Linux kein Grund besteht, ein Executable zu machen. Siehe nochmal wie man es unter Linux startet.
b) es momentan gar nicht angedacht ist, dass das Builden gut dokumentiert und einfach nachvollziehbar ist, jetzt ist der Fokus auf: das Progamm selbst entwickeln.
Allerdings stehen Deine Chancen sehr hoch, wenn Du den PyInstaller patchst und alle python durch python3 ersetzt, dass es dann hinhaut.
, ist alles hier beschrieben: https://github.com/renerocksai/sublimeless_zk#alternative-linux-installation.
Vergeßlichkeit, mangelnde Disziplin zur Befolgung des üblichen Problemlöse-Algorithmus (Anleitung lesen kommt ja weit oben ...)
Herzlichen Dank für diese lehrreichen Ausführungen. Eigentlich hätte mir das Vorhandensein des Ordners Patch zu denken geben können/sollen. Aber hier merkst du wieder, mit welch Fachmann du es zu tun hast. Also vielen Dank für Deine Geduld und Zeit ... Dein Punkt b) klingt auch sehr überzeugend.
Ein Ehrenrettungsversuch: Mein Ziel war herauszufinden, ob ich eigene Sonderwünsche für mich umsetzen könnte. Da ich auch viel Windows (unterwegs) benutze, wollte ich testen, ob ich das auch unter Windows hinbekomme. Da kompilieren usw. idR am einfachsten unter LInux ist, wollte ich erst gucken, ob ich das überhaupt irgendwo hinbekomme.
Ich kann sl_zk nicht bauen, stand Montag Mittag (commit cc0f138970cb34d121947f6453f8ca386310ef32) bzw. Verison 0.6.
Um Probleme auszuschließen, die durch mein ggf misskonfiguriertes Hauptsystem entstehen, habe ich es in einer neuen virtuellen Maschine mit ubuntu 18.04 (python 3.6.5) getestet.
Ich habe kein anaconda3, sondern habe es so probiert. Eingentlich sollte das ja keinen großen Unterschied machen.
Ich habe pyinstaller und pymmd per "sudo pip3" installiert und gem der Anleitung auf https://github.com/jasedit/pymmd die binaries kompiliert. Dann habe ich die Zeile 13 von make_linux.sh angepasst. Ich wollte keine inhaltliche Änderung, sondern nur den Pfad zu meinen binaries leichter eingeben können (so dass ein ggf. vorhandener trailing slash entfernt wird) und sie lesbarer machen. Vielleicht könnte man davon etwas übernehmen?
Eine Frage zu "make_linux.sh": Dort wird in Zeile 5 und 18
python
, also python2 aufgerufen, zumindest in gängigen Distrubtionen, die wohl pep394 folgen. Benutzt du absichtlich python2? Ich habe das durch "python3" (3.6.5) ersetzt, das bringt keine Änderung.Wenn ich dann "./make_linux.sh" ausführe erhalte ich einen Fehler. Der Output dieses Befehls steht unter [1].
Hier mein vorläufiges Ergebnis zum Fehler (aber Vorsicht - Anfänger am Werk): Ich glaube der Fehler kommt aus Deiner Zeile 18, nämlich dem Befehl "python bundle_version.py --rename-dist". Diese Datei möchte beim Kommandozeilenparamter --rename-dist in Z72 den Ordner src kopieren. Dieser ist bei linux in Zeile 65 definiert als
src = os.path.join('src', 'dist', 'sublimeless_zk')
, also'src/dist/sublimeless_zk'
. Solch einen Ordner habe ich aber zu diesem Zeitpunkt nicht in dem sublimeless_zk Ordner.Ich glaube nicht, dass das Problem an dem f-string (Zeile 3 aus version.py) liegt: Erstens habe ich 3.6 und auch die klassische Schreibweise mit
bundle_version = "{0}-{1}-{2}".format('sublimeless_zk', prefix, version}
macht keinen Unterschied.Am Ende des Outputs steht was von fehlenden Berechtigungen. Das sollte es aber auch nicht sein, denn den Befehl
cp -v /usr/lib/x86_64-linux-gnu/nss/* ~/
kann ich ausführen.Für einen Hinweis, wie ich hier weiterkomme, wäre ich sehr dankbar.
Ich fände es schön, wenn es allgemein Hinweise zum bauen gäbe, ähnlich wie du die für dein Repo semantic_zk hier veröffentlicht hast.
Hier meine Notizen, vielleicht ist da ja was wiederverwendbares bei
[1] make_linux_Fehler