|
7 | 7 | from subprocess import PIPE, Popen |
8 | 8 | from threading import Event, RLock, Thread |
9 | 9 |
|
10 | | -from wolframclient.utils.environment import find_default_kernel_path |
11 | 10 | from wolframclient.evaluation.kernel.zmqsocket import ( |
12 | 11 | Socket, |
13 | 12 | SocketAborted, |
|
17 | 16 | from wolframclient.exception import WolframKernelException |
18 | 17 | from wolframclient.utils import six |
19 | 18 | from wolframclient.utils.api import json, os, time, zmq |
| 19 | +from wolframclient.utils.environment import find_default_kernel_path |
| 20 | +from wolframclient.utils.functional import iterate |
20 | 21 |
|
21 | 22 | if six.WINDOWS: |
22 | 23 | from subprocess import STARTF_USESHOWWINDOW, STARTUPINFO |
@@ -130,12 +131,13 @@ def __init__( |
130 | 131 | "Cannot locate a kernel automatically. Please provide an explicit kernel path." |
131 | 132 | ) |
132 | 133 |
|
133 | | - if initfile is None: |
134 | | - self.initfile = os.path_join(os.dirname(__file__), "initkernel.m") |
135 | | - else: |
136 | | - self.initfile = initfile |
137 | | - if not os.isfile(self.initfile): |
138 | | - raise FileNotFoundError("Kernel initialization file %s not found." % self.initfile) |
| 134 | + self.initfile = tuple( |
| 135 | + iterate(initfile or (), os.path_join(os.dirname(__file__), "initkernel.m")) |
| 136 | + ) |
| 137 | + for path in self.initfile: |
| 138 | + if not os.isfile(path): |
| 139 | + raise FileNotFoundError("Kernel initialization file %s not found." % path) |
| 140 | + |
139 | 141 | if logger.isEnabledFor(logging.DEBUG): |
140 | 142 | logger.debug( |
141 | 143 | "Initializing kernel %s using script: %s" % (self.kernel, self.initfile) |
@@ -384,7 +386,12 @@ def _kernel_start(self): |
384 | 386 | "Kernel receives evaluated expressions from socket: %s", self.kernel_socket_in |
385 | 387 | ) |
386 | 388 | # start the kernel process |
387 | | - cmd = [self.kernel, "-noprompt", "-initfile", self.initfile] |
| 389 | + cmd = [self.kernel, "-noprompt"] |
| 390 | + |
| 391 | + for path in self.initfile: |
| 392 | + cmd.append("-initfile") |
| 393 | + cmd.append(path) |
| 394 | + |
388 | 395 | if self.loglevel != logging.NOTSET: |
389 | 396 | self.kernel_logger = KernelLogger( |
390 | 397 | name="wolfram-kernel-logger-%i" % self.id, level=self.loglevel |
|
0 commit comments