2017-07-13 7 views
0

pythonパッケージ名でcronタスクを実行する方法はありますか(entry_pointで指定)?pythonパッケージのentry_point名でcronタスクを実行

setuptoolsのインポートセットアップからsetup.py

それはシェルで動作

from setuptools import setup 

setup(
    name='myapp-cli', 
    (..blah..) 
    packages=[ 
     'myapp_cli' 
    ], 
    install_requires=['configparser', 'requests'], 
    entry_points={ 
     'console_scripts': [ 
       'myapp= myapp_cli.main:cli' 
      ] 
    }, 
    zip_safe=True 
) 

myapp do_stuff 
私はこのようにcronタスクに名前でアプリを実行したい

* * * * * /something_here? myapp do_stuff >> myapp.log 2>&1 

pythonパッケージのentry_pointがどのように動作するのか、cronでの使用方法を理解できません。出来ますか?

答えて

2

これはPythonの問題ではなく、linux/shellです。

これを修正する最も簡単な方法は、Pythonとスクリプトの絶対パスを使用することです。それは何も与えない場合は、あなたのエントリポイントが/usr/sbin/myappに位置していますと仮定

* * * * * /usr/bin/env python /usr/sbin/myapp do_stuff >> myapp.log 2>&1 
+0

そして、何(あなたはwhich myappでそれを見つける必要がありますか)?私は 'whereis python'がpythonのパスを返すのをチェックしましたが、' whereis myapp'では何も起こりません。 –

+0

ええ。 'myapp foo' - 動作します。 'python -m myapp.main' - あなたがdirパッケージでコマンドを実行することを意味するならば、それはうまくいきます。 –

+0

私は完全なsetup.pyファイルを質問に追加しました。 'python -m myapp_cli.main'は正しく動作しますが(' python -m myapp.main'ではなく 'myapp.main 'の仕様を見つける際にエラーを返します)、' myapp_cli'とentry_pointは 'myapp'です。 –

関連する問題