it-swarm.com.de

Python 'Pyodbc importieren' funktioniert in einer Cron-Task nicht

Nach dem Upgrade eines Server-Rechners auf Ubuntu 16.04 schlagen alle von cron gestarteten python Programme bei der Anweisung 'import pyodbc' fehl. Ich habe das Paket normalerweise über installiert

pip3 install pyodbc

Wenn ich ein einfaches Programm erstelle, das nur die Anweisung 'import pyodbc' enthält, funktioniert es, wenn ich es über die Befehlszeile ausführe:

$ python3 /home/test.py
$

Ich habe das gleiche Programm angewiesen, es von cron aus auszuführen (hier ist der relevante Teil von crontab):

$ crontab –l
0,5,10,15,20,25,30,35,40,45,50,55 8,10,12-18 * * * python3 /home/test.py 1>>/var/log/python3.log

Dann erhalte ich in der Protokolldatei:

Traceback (most recent call last):
  File "/home/test.py", line 1, in <module>
    import pyodbc
ImportError: No module named 'pyodbc'

Das Ergebnis ist das gleiche, wenn ich vom 'main' cron oder von einem Benutzer crontab aus laufe. Was kann ich tun, um das Problem zu lösen?

1

OK, dank des Vorschlags von Jacob Vlijm habe ich endlich die Lösung gefunden: Das Paket 'pyodbc' wurde unter user1 (/home/user1/.local/lib/python3.5/site-packages/) installiert. Da ich mich in meinem Terminal als Benutzer1 angemeldet habe, konnte das Programm das Modul finden. Mit cron starte ich die Programme normalerweise unter einem anderen Benutzer (user2).

Das war das Problem. Läuft in Cron über User1, war alles in Ordnung. Die letzte Frage, die ich untersuchen werde, ist, warum der Befehl 'pip3 install pyodbc==3.0.10' das Paket für Benutzer1 und nicht für alle Benutzer verfügbar gemacht hat.

1

Okay, machen Sie Ihr Programm so

#!/usr/bin/env python3
import pyodbc

Geben Sie ausführbare Berechtigungen wie

chmod +x filename.py

und jetzt addiere es cron und mal sehen.

0
rɑːdʒɑ