OK, I'll work on that for 9.7. - Marc
On Mon, Aug 29, 2022, 8:39 PM John H Palmieri <jhpalmier...@gmail.com> wrote: > I'm reviving this discussion because of another ask.sagemath.org post ( > https://ask.sagemath.org/question/63845/how-reach-octave-or-macaulay2-from-sage-notebook/): > someone who had installed octave and macaulay 2, but the app wasn't finding > them because of its minimal setting for PATH. This makes me think that a > preference panel to set the PATH would be a good idea. As far as I can > tell, the app still reads $HOME/.sage/init.sage, so people can use that > instead of modifying an IPython profile function, right? But a small > preference panel might be nice. > > -- > John > > On Friday, June 24, 2022 at 8:38:22 PM UTC-7 Marc Culler wrote: > >> I should have mentioned that it is always possible to run the main >> executable of a macOS app from the command line. E.g. >> >> $ /Applications/SageMath.app/Contents/MacOS/SageMath >> >> When you do that, the process that is launched is almost identical to >> the one that is launched when you click on the icon, the difference being >> that it does have a stdout and stderr. So if you launch the app that way >> from your terminal then you will be able to see any messages that are being >> written to stderr. (This is one of those situations for which a terminal >> is an optimal tool.) >> >> - Marc >> >> >> >> On Fri, Jun 24, 2022 at 10:28 PM Marc Culler <marc....@gmail.com> wrote: >> >>> Hi John, >>> >>> A macOS app launched from an icon has no stdout or stderr. Apple's >>> NSLog command will write to stderr if it exists, and to a log file if it >>> does not exist. But simply writing to stderr as most unix programs do has >>> no effect if stderr does not exist. When using the terminal as the input >>> for the sage app any stderr output generated by sage will go to the >>> terminal. But there is no place for such error messages to go if they are >>> generated before sage is launched. The /usr/local/bin/sage command is >>> available as long as you install the recommended extra package, and anyone >>> who is debugging should use it whenever necessary, as you did. >>> >>> I don't see any value in working hard to try to arrange that every >>> possible thing can be done without ever using a terminal. There is nothing >>> wrong with using a terminal. There are many tasks for which a terminal is >>> the optimal tool. So be it. >>> >>> - Marc >>> >>> On Fri, Jun 24, 2022 at 10:01 PM John H Palmieri <jhpalm...@gmail.com> >>> wrote: >>> >>>> Hi Marc, >>>> >>>> Very good question. I think that allowing users to modify the standard >>>> config files is the right thing to do, but I'm really not sure. I worry >>>> that the next person will want to modify a different setting, and you don't >>>> want to get dragged into recreating IPython/Jupyter preferences. For >>>> debugging, would it be worth providing a warning if a config file is found, >>>> or if a config file is found with any nonstandard settings? (The default >>>> config file is entirely commented out.) >>>> >>>> By the way, I debugged Samuel's suggestion by running "./sage -n" with >>>> a local installation: it printed error messages in the terminal where I ran >>>> it that let me know that something was wrong. I figured out that I had to >>>> use quotes, as in >>>> >>>> c.InteractiveShellApp.exec_lines = ['import sys; ...'] >>>> >>>> rather than >>>> >>>> c.InteractiveShellApp.exec_lines = [import sys; ...] >>>> >>>> I don't know where to view the corresponding error messages for the OS >>>> X app. >>>> >>>> A question for both of you: I think the standard situation is to not >>>> have a profile directory, you have to run "sage --ipython profile create". >>>> Is there a good way to do this instead from a Jupyter notebook? Then >>>> someone could create a profile directory without having to use the >>>> terminal, although they would need to use a text editor to modify it. >>>> >>>> -- >>>> John >>>> >>>> On Friday, June 24, 2022 at 3:12:52 PM UTC-7 Marc Culler wrote: >>>> >>>>> Thank you for figuring that out Samuel. Now here is a question for >>>>> both of you. The macOS app intentionally sets a minimal environment when >>>>> it starts sage. It is intentionally minimal because it would be >>>>> dangerous, >>>>> in terms of security, but more importantly in terms of the potential for >>>>> creating hard-to-debug crashes of the app, to simply accept whatever weird >>>>> stuff the user happens to have in their environment. The decision to set >>>>> a >>>>> specific minimal environment for the app was made after such a crash, >>>>> which >>>>> was related to traces of an obsolete Sage installation left in a user's >>>>> .bashrc file. >>>>> >>>>> But dangerous should not necessarily mean impossible. It would be >>>>> feasible to add a preferences panel to the app which could include a PATH >>>>> string to be appended to the minimal default PATH at startup. Being >>>>> forced >>>>> to type that string into a preferences dialog would at least alert the >>>>> user >>>>> to the possibility that the next weird crash might be their own fault. >>>>> But >>>>> Samuel's answer indicates that expert users can actually do this using a >>>>> completely orthogonal preferences setting (one of millions, I suspect) >>>>> namely editing an IPython config file hidden in the user's .sage >>>>> directory. His answer shows that it is not impossible, just difficult. >>>>> >>>>> My question is whether Samuel's approach is better than providing a >>>>> simple way to modify the PATH, and thereby inviing an unsophisticated user >>>>> to make a big mess which could cripple the app. The esoteric knowledge >>>>> needed to find and edit that config file provides a pretty good filter for >>>>> ensuring that people who do this know what they are doing, or at least >>>>> know >>>>> that they are responsible for the consequences of making a mistake while >>>>> doing it. Also, it is unclear to me how many users would actually want to >>>>> use such a feature. Adding features that almost no one needs is not my >>>>> idea of a good design approach. >>>>> >>>>> What do the two of you think? >>>>> >>>>> - Marc >>>>> >>>>> On Friday, June 24, 2022 at 2:08:17 PM UTC-5 John H Palmieri wrote: >>>>> >>>>>> Hi Samuel, >>>>>> >>>>>> Thank you for this. One thing: I made a mistake in my comments on >>>>>> ask.sagemath.org. Changing sys.path changes the Python path, not the >>>>>> path for executables. One option is to use >>>>>> >>>>>> import os; os.environ["PATH"] += ":/usr/local/bin" >>>>>> >>>>>> Any better ways to do this? Your pointer on how to include this into >>>>>> IPython config files works, as long as the lines are in quotes: >>>>>> >>>>>> c.InteractiveShellApp.exec_lines = [ >>>>>> 'import os; os.environ["PATH"] += ":/usr/local/bin" '] >>>>>> >>>>>> >>>>>> >>>>>> On Friday, June 24, 2022 at 10:09:39 AM UTC-7 slelievre wrote: >>>>>> >>>>>>> 2022-06-22 16:37:11 UTC, John H Palmieri: >>>>>>> > >>>>>>> > How do I set the PATH in the OS X Jupyter notebook, >>>>>>> > if I'm using the 3-manifolds binary app? I mean, I know >>>>>>> > how to do it in an individual notebook, but how do I set >>>>>>> > the default PATH for every notebook? For example, >>>>>>> > how do I add /usr/local/bin so that it's in the PATH >>>>>>> > every time I open a new notebook? >>>>>>> >>>>>>> Hi John, >>>>>>> >>>>>>> Good job with your comments at >>>>>>> >>>>>>> - Ask Sage question 62873 >>>>>>> https://ask.sagemath.org/question/62873 >>>>>>> Animating plots in Jupyter/Sagemath >>>>>>> >>>>>>> Here is a possibility for the missing bit, after reading >>>>>>> >>>>>>> - discussion at [Stack Overflow question 34976803]( >>>>>>> https://stackoverflow.com/q/34976803) >>>>>>> - [Lucy Park: When Python imports but IPython does not]( >>>>>>> https://www.lucypark.kr/blog/2013/02/10/when-python-imports-and-ipython-does-not/ >>>>>>> ) >>>>>>> >>>>>>> To define some code to be run at the start of each >>>>>>> Sage session, and/or each time the Sage Jupyter >>>>>>> kernel starts, edit one or both of the files >>>>>>> >>>>>>> - `$HOME/.sage/ipython-5.0.0/profile_default/ipython_config.py` >>>>>>> - >>>>>>> `$HOME/.sage/ipython-5.0.0/profile_default/ipython_kernel_config.py` >>>>>>> >>>>>>> in which you should find a section like this: >>>>>>> >>>>>>> ## lines of code to run at IPython startup. >>>>>>> # Default: [] >>>>>>> # c.InteractiveShellApp.exec_lines = [] >>>>>>> >>>>>>> Uncomment the last line in that section and add >>>>>>> any code to run. For example: >>>>>>> >>>>>>> ## lines of code to run at IPython startup. >>>>>>> # Default: [] >>>>>>> c.InteractiveShellApp.exec_lines = [ >>>>>>> import sys; sys.path.append('/usr/local/bin') >>>>>>> ] >>>>>>> >>>>>>> Feel free to consolidate your comments and this idea >>>>>>> into an answer to the Ask Sage question. --Samuel >>>>>>> >>>>>>> -- >>>> You received this message because you are subscribed to a topic in the >>>> Google Groups "sage-support" group. >>>> To unsubscribe from this topic, visit >>>> https://groups.google.com/d/topic/sage-support/NiCkmMCEfd4/unsubscribe. >>>> To unsubscribe from this group and all its topics, send an email to >>>> sage-support...@googlegroups.com. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/sage-support/cca085d1-7134-4297-b666-1877f86aec84n%40googlegroups.com >>>> <https://groups.google.com/d/msgid/sage-support/cca085d1-7134-4297-b666-1877f86aec84n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- > You received this message because you are subscribed to a topic in the > Google Groups "sage-support" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/sage-support/NiCkmMCEfd4/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > sage-support+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sage-support/1db0895f-9e63-4a9e-b5f6-b56c3e41fff9n%40googlegroups.com > <https://groups.google.com/d/msgid/sage-support/1db0895f-9e63-4a9e-b5f6-b56c3e41fff9n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-support+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-support/CALcZXRE6Gj6MCX4JHNno1QjV%3DJ4n2mwVy27m%3DSVWCDcn%2BcqOKw%40mail.gmail.com.