2017-07-13 51 views
0

是否有任何方式使用python包名稱(在entry_point中指定)運行cron任務?使用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(你應該which myapp找到它)

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

如果什麼給什麼?我已經檢查過whereis python返回python路徑,但在whereis myapp沒有任何反應。 –

+0

是的。 'myapp foo' - 作品。 'python -m myapp.main' - 如果你的意思是在包dir中執行命令,那麼是的,它也可以。 –

+0

我已經添加完整的setup.py文件來提問。軟件包名稱'myapp_cli'和entry_point是'myapp'因此 - 'python -m myapp_cli.main'正常工作(但不是'python -m myapp.main' - 它返回「找到'myapp.main'的規範時出錯'」) –