VERSION_2_4_5 = six.u('2.4.5')
 
     def __init__(self, data_location=None, create=True,
-                 taskrc_location='~/.taskrc'):
+                 taskrc_location='~/.taskrc', task_command='task'):
         self.taskrc_location = os.path.expanduser(taskrc_location)
 
         # If taskrc does not exist, pass / to use defaults and avoid creating
         if not os.path.exists(self.taskrc_location):
             self.taskrc_location = '/'
 
+        self.task_command = task_command
+
         self._config = None
         self.version = self._get_version()
         self.overrides = {
 
         self.tasks = TaskQuerySet(self)
 
+    def _get_task_command(self):
+        return self.task_command.split()
+
     def _get_command_args(self, args, config_override=None):
-        command_args = ['task', 'rc:{0}'.format(self.taskrc_location)]
+        command_args = self._get_task_command() + ['rc:{0}'.format(self.taskrc_location)]
         overrides = self.overrides.copy()
         overrides.update(config_override or dict())
         for item in overrides.items():
 
     def _get_version(self):
         p = subprocess.Popen(
-            ['task', '--version'],
+            self._get_task_command() + ['--version'],
             stdout=subprocess.PIPE,
             stderr=subprocess.PIPE)
         stdout, stderr = [x.decode('utf-8') for x in p.communicate()]
     def convert_datetime_string(self, value):
 
         if self.version >= self.VERSION_2_4_0:
-            # For strings, use 'task calc' to evaluate the string to datetime
+            # For strings, use 'calc' to evaluate the string to datetime
             # available since TW 2.4.0
             args = value.split()
             result = self.execute_command(['calc'] + args)
 
 
 class TasklibTest(unittest.TestCase):
 
+    def get_taskwarrior(self, **kwargs):
+        tw_kwargs = dict(
+            data_location=self.tmp,
+            taskrc_location='/',
+        )
+        tw_kwargs.update(kwargs)
+        return TaskWarrior(**tw_kwargs)
+
     def setUp(self):
         self.tmp = tempfile.mkdtemp(dir='.')
-        self.tw = TaskWarrior(data_location=self.tmp, taskrc_location='/')
+        self.tw = self.get_taskwarrior()
 
     def tearDown(self):
         shutil.rmtree(self.tmp)
 
 
+class TaskWarriorTest(TasklibTest):
+
+    def test_custom_command(self):
+        # ensure that a custom command which contains multiple parts
+        # is properly split up
+        tw = self.get_taskwarrior(task_command='wsl task')
+        self.assertEqual(tw._get_task_command(), ['wsl', 'task'])
+
+
 class TaskFilterTest(TasklibTest):
 
     def test_all_empty(self):