0

Macでoh-my-zsh、python 3.6.1を使用しています。crontab を実行して python3 スクリプトを実行したいと思います。

私の最近の試みの1つはこれでした(私が見つけた20の異なるstackoverflowの回答はどれも機能しなかったため、重複としてこれをシャットダウンしないでください:

SHELL=/bin/bash
24 12 * * * root source env/latest-env/bin/activate && /usr/local/bin/python3 /path/to/file/data_transfer.py

エラーは ですModuleNotFoundError: No module named 'some_module'。そのモデルは最新の仮想環境に存在するため、virtual_env をアクティブ化していません。#!env/latest-env/bin/pythonスクリプトの先頭で使用して実行すると、同じエラーが発生します。

代わりにvenvバージョンも試しました:

activate_this = '/path/to/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

しかし、これはpython 2用であるため、エラーはNameError: name 'execfile' is not defined、execに変更すると、NameError: name 'env' is not defined. しかし、私はこれが私の道であることを知っています。

crontab で最新の venv を有効にしてスクリプトを実行するにはどうすればよいですか?

4

1 に答える 1

1

仮想環境を作成すると、その環境はインタープリターの/binサブディレクトリにバインドされます。したがって、次のような crontab エントリが見つかるはずです。

24 12 * * * root /path/to/env/latest-env/bin/python /path/to/file/data_transfer.py

あなたが必要とするすべてを行います。

于 2017-08-22T22:14:39.723 に答える