Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python-crontab package returns __init__ error

Tags:

python

crontab

Can anyone tell me what I'm doing wrong with python-crontab?

from crontab import CronTab
system_cron = CronTab()

generates the following error:

File "test.py", line 3, in <module>
cron = CronTab()
TypeError: __init__() takes exactly 2 arguments (1 given)

I get the same problem when I try other variations of examples straight out of the package instructions:

my_user_cron  = CronTab(user=True)
users_cron    = CronTab(user='username')

I've also tried creating the object with this approach, which I found in the python-crontab.py file:

cron = CronTab(tab='')

But it generates this error: TypeError: __init__() got an unexpected keyword argument 'tab'

I've tried looking at the code in the package to see if maybe it's a documentation error and figure my way around, but it's beyond my skill level. I believe this is the code that defines how I should be creating a crontab object:

def __init__(self, user=None, tab=None, tabfile=None, log=None):
    if user == True and not WINOS:
        user = pwd.getpwuid( os.getuid() )[ 0 ]
    self.lines = None
    self.crons = None
    self.filen = None
    # Protect windows users
    self.root  = not WINOS and os.getuid() == 0
    self.user  = user
    # Detect older unixes and help them out.
    self.intab = tab
    self.read(tabfile)
    self._log = log

Any thoughts on what I am doing wrong?

help(CronTab) returns:

class CronTab(__builtin__.object)
|  Methods defined here:
|
|  __init__(self, crontab)
|
|  next(self, now=None, increments=[<function <lambda>>, <function <lambda>>, <function <lambda>>, <function _month_incr>, <function <lambda>>, <function _year_incr>, <function <lambda>>, <function <lambda>>, <function <lambda>>, <function <lambda>>, <function <lambda>>], delta=True)
|      How long to wait in seconds before this crontab entry can next be
|      executed.
|
|  previous(self, now=None, delta=True)
|
|  test(self, entry)
|
|   ----------------------------------------------------------------------
|  Data descriptors defined here:
|
|   matchers
like image 243
user2117680 Avatar asked Nov 30 '13 16:11

user2117680


3 Answers

You've installed the crontab package, the documentation you showed is for python-crontab. They're two totally different packages.

like image 164
Lie Ryan Avatar answered Nov 19 '22 17:11

Lie Ryan


If you get the error TypeError: init() takes exactly 2 arguments when using CronTab, you have the wrong module installed. You need to install python-crontab and not crontab from pypi or your local package manager and try again.

Refer: https://pypi.org/project/python-crontab/

uninstall crontab

pip uninstall crontab

& install python-crontab

pip install python-crontab
like image 32
AbhinayMe Avatar answered Nov 19 '22 15:11

AbhinayMe


cron = CronTab(user='name')
TypeError: __init__() got an unexpected keyword argument 'user'

If you are getting above error do following things:

Uninstall crontab using

pip uninstall crontab

and install

pip install python-crontab
like image 1
Seema Bambalwadi Avatar answered Nov 19 '22 15:11

Seema Bambalwadi