Can't run python workflow in the WebPortal

knime.log (17.5 KB)
Hi all.

I built a workflow containing two python script nodes. I tested it in my Analytics Platform and it worked. I then uploaded it to the server, tried to run it in the WebPortal and the following error appeared:

Execute failed: Could not start Python kernel. Error during Python installation test: Could not find python executable at the given location: python3… See log for details.

I’ll send the logs as well.

I then tried to go the the computer running my server and fire up its Analytics Platform serving as executor. I downloaded the workflow from the server there and ran it on the executor directly and it worked. So, the only way it doesn’t work is if I run it from the WebPortal. I checked to see the default python version being used in the nodes and it’s python 3 as I want it.

My preferences.epf file from the server looks like this:

file_export_version=3.0
/instance/org.knime.workbench.core/database_timeout=7200
/instance/org.knime.workbench.core/database_drivers=/single-jar-jdbc-driver.jar;<path-to-drivers/multi-jar-jdbc-driver
/instance/org.knime.ext.r.bin/knime.r.home=R
/instance/org.knime.python/pythonPath=/python
/instance/org.knime.python2/defaultPythonOption=python3
/instance/org.knime.python2/python2Path=/usr/bin/python2
/instance/org.knime.python2/python3Path=/knime/anaconda3/bin/python3
/instance/org.knime.workbench.core/logging.logfile.location=true

My Analytics Platform and Server executor versions are the same

Does anyone know what the problem is here?

Edit: Okay I figured out the problem, it was still somehow trying to use python2, so in the preferences file I gave the python3 path for the python2 variables and it worked. It still isn’t a good solution, why is this still trying to use python 2 when I have python3 as default in the Knime executor preferences and nodes of the workflow?

Dear @TomasCardoso,

the usual behavior is that KNIME prompts an error if there is a Python version != 2.x configured as Python 2 environment. Changing the default Python in the preferences will only change the standard node configuration for newly added nodes. Previously configured nodes will still have the old settings. Where did you find the clue that KNIME tries to Python 2 even though Python 3 is configured?

Best,
Marten

It was more of a hunch, looking at the logs. It was the only possible cause I could think of and I tried it out. But this solution was a bit like putting some duct tape on the problem. But from what you’re saying, since the preferences now have python3, any new workflows using python nodes will use python3?

For every Python node you can choose in it’s configuration dialog whether it should be executed with Python 2 or Python 3. If you change the default in your preferences from Python 2 to Python 3, new nodes you add to any workflow will be configured to use Python 3.