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.

Reply via email to