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.cul...@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 <jhpalmier...@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+unsubscr...@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 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/CALcZXRECk7ZKqk8-_q8%3DVqc5kMuY%2B82u2e7Y91CzOx%3DubKUrVQ%40mail.gmail.com.

Reply via email to