ich habe ein kleines Script, welches über die serielle Schnitstelle mit einem Arduino kommuniziert und diesem Anweisungen bzgl. einer Motordrehzahl gibt. Die entsprechende Drehzahl wird als Argument dem Script übergeben.
Das entsprechende Script schaut so aus und ist in Python3-konform:
Code: Alles auswählen
#!/usr/bin/env python3
import sys
import time
import serial
PORT = '/dev/tty.usbmodemFA131'
with serial.Serial(PORT, 9600) as arduino:
time.sleep(2)
arduino.write(sys.argv[1].encode('ASCII'))
print(arduino.readline())

Nun will ich das Script aber nicht aus dem Terminal aufrufen, sondern per "Klick" aus einem anderen Programm heraus. Es handelt sich dabei um Artisan - eine Software zur Aufzeichnung von Röstvorgängen.
Artisan erlaubt es, Buttons zu definieren, welche per Klick externe Programme aufrufen. In meinem Fall eben das obige Script.
Artisan selbst ist in Python2 geschrieben.
Wenn ich nun einen der Buttons anklicke um mein Script aufzurufen, stürzt Python ab und im Terminal erscheint folgende Meldung:
Code: Alles auswählen
Last login: Wed Jul 13 07:21:46 on ttys000
Philipps-Air:~ philipp$ /Applications/Artisan.app/Contents/MacOS/Artisan ; exit;
Jul 13 07:22:20 Artisan[40170] <Notice>: /Applications/Artisan.app/Contents/Resources/lib/python2.7/site-packages.zip/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.
Jul 13 07:22:57 Artisan[40170] <Notice>: Fatal Python error: Py_Initialize: unable to load the file system codec
Jul 13 07:22:57 Artisan[40170] <Notice>: ImportError: No module named 'encodings'
Jul 13 07:22:57 Artisan[40170] <Notice>:
Jul 13 07:22:57 Artisan[40170] <Notice>: Current thread 0x00007fff73660000 (most recent call first):
Ich weiss, dass es definitiv möglich ist, Python-Scripte aus Artisan heraus zu starten, allerdings sind die mir bekannten Scripte ebenfalls in Python2 verfasst...
Gibt es grundsätzlich Probleme bei einer solchen Konstellation?
Gibt es Möglichkeiten dies zu umgehen, ohne das Script Python2-konform umzuschreiben?
Ich nutze MacOS 10.11.5 und habe Python 3.5.2 nachinstalliert.
Vielen Dank für eure Hilfe!
Philipp