web-dev-qa-db-ja.com

Python 'pyodbcのインポート'はcronタスクで機能しません

サーバーマシンをUbuntu 16.04にアップグレードした後、cronで開始されたすべてのpythonプログラムは、 'import pyodbc'ステートメントで失敗します。通常、そのパッケージをインストールしました

pip3 install pyodbc

命令'import pyodbc'のみを含む単純なプログラムを作成する場合、コマンドラインから実行すると機能します。

$ python3 /home/test.py
$

同じプログラムをcronから実行するように指示しました(ここに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

それから、ログファイルで、私は得る:

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

「メイン」cronまたはユーザーcrontabから実行した場合の結果は同じです。問題を解決するにはどうすればよいですか?

1

わかりました。JacobVlijmの提案のおかげで、解決策がようやくわかりました。パッケージ 'pyodbc'はuser1(/home/user1/.local/lib/python3.5/site-packages/)の下にインストールされていました。端末にuser1としてログインすると、プログラムはモジュールを見つけることができます。 cronを使用して、通常は別のユーザー(user2)の下でプログラムを実行します。

それが問題でした。 user1を介してcronで実行すると、すべて問題ありませんでした。最後に調査する質問は、コマンド 'pip3 install pyodbc==3.0.10'がパッケージをすべてのユーザーではなくuser1で使用できるようにした理由です。

1

さて、あなたのプログラムをこのようにしてください

#!/usr/bin/env python3
import pyodbc

次のような実行権限を付与します

chmod +x filename.py

そして今、cronを追加して見てみましょう。

0
rɑːdʒɑ