On Mon, Jan 14, 2019 at 2:38 PM Dima Pasechnik <dimp...@gmail.com> wrote: > > On Mon, Jan 14, 2019 at 12:36 PM E. Madison Bray <erik.m.b...@gmail.com> > wrote: > > > > On Mon, Jan 14, 2019 at 12:00 PM Dima Pasechnik <dimp...@gmail.com> wrote: > > > > > > Turns out it's due to the script reading a parameter, in the usual > > > Pythonic way, at the end of the file: > > > > > > if __name__ == "__main__": > > > import sys > > > m = int(sys.argv[1]) > > > compute_alpha(m) > > > > > > Namely, load() tries to evaluate int(sys.argv[1]), whereas for some > > > reason sys.argv[1] is '-i'. > > > > > > So this is probably not a bug, but deserves mentioning in the > > > documentation. > > > > What I'm wondering is why load() sets `__name__ = '__main__'` > > (otherwise it wouldn't be running this code at all). > > > > There might be a good reason, but it also seems like a bad idea > > precisely for reasons like this: .sage files that also work as > > executables, and thus use the standard `__name__ == '__main__'` > > blocking. I don't think load() should cause this code to run. It > > might instead be better if it assigned some random-ish module name > > based on the .sage filename. > > perhaps, even better, having `__name__` equal to None by default is a > better choice,
That would probably be *worse*. Most Python code assumes a module's __name__ is a string, and it should also be unique [1] (though in the case of manually loading a module I'm not sure if this matters, since it will not be added to sys.modules IIRC. Really it can be anything one wants, but in order to avoid confusion it's better if it does not coincide with the name of an `import`-ed modules. > and load() can get an optional parameter to set `__name__` ? Perhaps? That strikes me as "you ain't gonna need it" though. [1] https://docs.python.org/3/reference/import.html#__name__ > > > On Mon, Jan 14, 2019 at 10:42 AM Dima Pasechnik <dimp...@gmail.com> wrote: > > > > > > > > My student created a sage script crossing.sage that runs by itself, > > > > i.e. starting it in bash, with it having the 1st line > > > > > > > > #!/usr/bin/env sage > > > > > > > > but an attempt to load("crossing.sage") in Sage gives an error: > > > > > > > > ValueError Traceback (most recent call > > > > last) > > > > <ipython-input-1-f92dbb154243> in <module>() > > > > ----> 1 load("crossing.sage") > > > > /home/dimpase/sage/local/lib/python2.7/site-packages/sage/misc/persist.pyx > > > > in sage.misc.persist.load (build/cythonized/sag > > > > e/misc/persist.c:2470)() > > > > 134 > > > > 135 if sage.repl.load.is_loadable_filename(filename): > > > > --> 136 sage.repl.load.load(filename, globals()) > > > > 137 return > > > > 138 > > > > /home/dimpase/sage/local/lib/python2.7/site-packages/sage/repl/load.pyc > > > > in load(filename, globals, attach) > > > > 261 add_attached_file(fpath) > > > > 262 with open(fpath) as f: > > > > --> 263 exec(preparse_file(f.read()) + "\n", globals) > > > > 264 elif ext == '.spyx' or ext == '.pyx': > > > > 265 if attach: > > > > <string> in <module>() > > > > ValueError: invalid literal for int() with base 10: '-i' > > > > sage: > > > > > > > > --------------------- > > > > > > > > Is this a Sage bug? Any idea what might be going on there? > > > > > > > > Thanks > > > > Dima > > > > > > -- > > > 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 post to this group, send email to sage-devel@googlegroups.com. > > > Visit this group at https://groups.google.com/group/sage-devel. > > > For more options, visit https://groups.google.com/d/optout. > > > > -- > > 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 post to this group, send email to sage-devel@googlegroups.com. > > Visit this group at https://groups.google.com/group/sage-devel. > > For more options, visit https://groups.google.com/d/optout. > > -- > 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 post to this group, send email to sage-devel@googlegroups.com. > Visit this group at https://groups.google.com/group/sage-devel. > For more options, visit https://groups.google.com/d/optout. -- 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 post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.