Python 'Import pyodbc' não funciona em uma tarefa Cron

1

Após a atualização de uma máquina servidora para o Ubuntu 16.04, todos os programas python iniciados pelo cron falham na instrução 'import pyodbc'. Eu instalei esse pacote normalmente via

pip3 install pyodbc

Se eu criar um programa simples contendo apenas a instrução 'import pyodbc' , ele funcionará se eu o executar a partir da linha de comando:

$ python3 /home/test.py
$

Eu instrui o mesmo programa a ser executado a partir do cron (aqui está a parte relevante do 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

Em seguida, no arquivo de log, recebo:

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

O resultado é o mesmo se eu correr do cron 'main' ou de um crontab de usuário '. O que posso fazer para resolver o problema?

    
por Marc Vanhoomissen 24.08.2016 / 12:34

2 respostas

1

OK, graças à sugestão de Jacob Vlijm, eu finalmente encontrei a solução: o pacote ' pyodbc ' tinha sido instalado sob user1 ( /home/user1/.local/lib/python3.5/site-packages/ ). Como eu fiz o login como user1 no meu terminal, o programa poderia encontrar o módulo. Usando cron , geralmente executo os programas com outro usuário ( user2 ).

Esse foi o problema. Rodando no cron via user1, tudo estava OK. A última pergunta que vou investigar é por que o comando ' pip3 install pyodbc==3.0.10 ' disponibilizou o pacote para o usuário1 e não para todos os usuários.

    
por Marc Vanhoomissen 24.08.2016 / 15:55
0

Tudo bem, faça seu programa assim

#!/usr/bin/env python3
import pyodbc

Conceder permissões executáveis como

chmod +x filename.py

e agora adicione o cron e vamos ver.

    
por rɑːdʒɑ 24.08.2016 / 13:09