This most probably just means that jmol package is not installed. It's
now optional, you need to explicitly say you want it installed.
The quickest way would by just

make jmol

from the directory you built Sage from.
Then try running your test again

On Thu, Dec 12, 2024 at 12:24 PM Richard Quint
<richard.a.qu...@gmail.com> wrote:
>
> I have built Sage from source (sage-10.4.tar.gz and sage-10.5.tar.gz) on
> four machines with different architectures and different derivatives of
> Debian.  On all machines the jmol viewer for 3d plots works under 10.4
> but not under 10.5.  The RuntimeError Traceback is identical on all
> machines.  A copy of a Sage session is below. Except for the machine
> specific info the Traceback is identical for each installation. As you
> can see from the transcript, java is installed.  It is used by jmol in
> 10.4.  I don't know enough Python to see what the problem is.  Any help
> would be appreciated.
>
> ┌────────────────────────────────────────────────────────────────────┐
> │ SageMath version 10.5, Release Date: 2024-12-04                    │
> │ Using Python 3.12.7. Type "help()" for help.                       │
> └────────────────────────────────────────────────────────────────────┘
> sage: !uname -a
> Linux Iphegenia 6.11.0-9-generic #9-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct
> 14 13:19:59 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
> sage: !lsb_release -d
> Description:    Ubuntu 24.10
> sage: !java --version
> openjdk 21.0.5 2024-10-15
> OpenJDK Runtime Environment (build 21.0.5+11-Ubuntu-1ubuntu124.10)
> OpenJDK 64-Bit Server VM (build 21.0.5+11-Ubuntu-1ubuntu124.10, mixed
> mode, sharing)
> sage: var('x y')
> (x, y)
> sage: plot3d(x*y, (-1,1), (-1,1), viewer="jmol")
> ---------------------------------------------------------------------------
> RuntimeError                              Traceback (most recent call last)
> Cell In[5], line 1
> ----> 1 plot3d(x*y, (-Integer(1),Integer(1)), (-Integer(1),Integer(1)),
> viewer="jmol")
>
> File
> ~/Sage/sage-10.5/local/var/lib/sage/venv-python3.12/lib/python3.12/site-packages/IPython/core/displayhook.py:268,
> in DisplayHook.__call__(self, result)
>      266 self.start_displayhook()
>      267 self.write_output_prompt()
> --> 268 format_dict, md_dict = self.compute_format_data(result)
>      269 self.update_user_ns(result)
>      270 self.fill_exec_result(result)
>
> File
> ~/Sage/sage-10.5/local/var/lib/sage/venv-python3.12/lib/python3.12/site-packages/IPython/core/displayhook.py:157,
> in DisplayHook.compute_format_data(self, result)
>      127 def compute_format_data(self, result):
>      128     """Compute format data of the object to be displayed.
>      129
>      130     The format data is a generalization of the :func:`repr` of
> an object.
>     (...)
>      155
>      156     """
> --> 157     return self.shell.display_formatter.format(result)
>
> File ~/Sage/sage-10.5/src/sage/repl/display/formatter.py:187, in
> SageDisplayFormatter.format(self, obj, include, exclude)
>      112 def format(self, obj, include=None, exclude=None):
>      113     r"""
>      114     Use the Sage rich output instead of IPython.
>      115
>     (...)
>      185         I am repper
>      186     """
> --> 187     sage_format, sage_metadata = self.dm.displayhook(obj)
>      188     assert PLAIN_TEXT in sage_format, 'plain text is always
> present'
>      190     # use Sage rich output for any except those native to
> IPython, but only
>      191     # if it is not plain and dull
>
> File ~/Sage/sage-10.5/src/sage/repl/rich_output/display_manager.py:800,
> in DisplayManager.displayhook(self, obj)
>      798 self._backend.set_underscore_variable(obj)
>      799 plain_text, rich_output = self._rich_output_formatter(obj, dict())
> --> 800 return self._backend.displayhook(plain_text, rich_output)
>
> File ~/Sage/sage-10.5/src/sage/repl/rich_output/backend_ipython.py:266,
> in BackendIPythonCommandline.displayhook(self, plain_text, rich_output)
>      264     return ({'text/plain': msg}, {})
>      265 elif isinstance(rich_output, OutputSceneJmol):
> --> 266     msg = self.launch_jmol(rich_output, plain_text.text.get_str())
>      267     return ({'text/plain': msg}, {})
>      268 elif isinstance(rich_output, OutputSceneWavefront):
>
> File ~/Sage/sage-10.5/src/sage/repl/rich_output/backend_ipython.py:367,
> in BackendIPythonCommandline.launch_jmol(self, output_jmol, plain_text)
>      365 jdata = JmolData()
>      366 if not jdata.is_jmol_available() and not DOCTEST_MODE:
> --> 367     raise RuntimeError('jmol cannot run, no suitable java
> version found')
>      368 launch_script = output_jmol.launch_script_filename()
>      369 jmol_cmd = 'jmol'
>
> RuntimeError: jmol cannot run, no suitable java version found
> sage:
>
>
> --
> You received this message because you are subscribed to the Google Groups 
> "sage-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sage-devel+unsubscr...@googlegroups.com.
> To view this discussion visit 
> https://groups.google.com/d/msgid/sage-devel/87e704ba-846b-4f2a-abf2-a7a81e3cff5b%40gmail.com.

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/sage-devel/CAAWYfq2HKAVO3H3xG4AbZJ0EKK869qSgQ7r0_du%2Ba8pkDWH_Aw%40mail.gmail.com.

Reply via email to