ASKSAGE: Sage Q&A Forum - Individual question feedhttp://ask.sagemath.org/questions/Q&A Forum for SageenCopyright Sage, 2010. Some rights reserved under creative commons license.Fri, 18 Jul 2014 09:52:28 -0500Can't run Python script in Sage, error at import sage.allhttp://ask.sagemath.org/question/23458/cant-run-python-script-in-sage-error-at-import-sageall/ I only just figured out how to run Sage in a daemon/service-like kind of state - see http://ask.sagemath.org/question/23431/running-sage-from-other-languages-with-higher-performance for the Sage script.
Now I'm trying to rewrite it to Python with Sage imports, so I can automatically start it with `sage -python [PATH TO PYTHON FILE]` as opposed to manually starting Sage and loading the script.
The fails with the following stack trace
Traceback (most recent call last):
File "socket.py", line 1, in <module>
import socket
File "/var/www/lingapps/assets/sage/socket.py", line 4, in <module>
import sage.all
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/all.py", line 54, in <module>
from sage.env import SAGE_ROOT, SAGE_DOC, SAGE_LOCAL, DOT_SAGE, SAGE_ENV
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/env.py", line 84, in <module>
_add_variable_or_fallback('HOSTNAME', socket.gethostname())
AttributeError: 'module' object has no attribute 'gethostname'
This also happens when I have just a single line in the script: `import sage.all`.
It also fails with the following error if I just start `sage -python` and type `import sage.all`:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/all.py", line 54, in <module>
from sage.env import SAGE_ROOT, SAGE_DOC, SAGE_LOCAL, DOT_SAGE, SAGE_ENV
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/env.py", line 20, in <module>
import os, socket
File "socket.py", line 6, in <module>
import sage.calculus.predefined
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/calculus/__init__.py", line 1, in <module>
import all
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/calculus/all.py", line 1, in <module>
from calculus import maxima as maxima_calculus
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/calculus/calculus.py", line 400, in <module>
from sage.rings.all import RR, Integer, CC, QQ, RealDoubleElement, algdep
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/rings/all.py", line 21, in <module>
from ring import Ring
File "ring.pyx", line 1, in init sage.rings.ring (sage/rings/ring.c:18156)
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/structure/__init__.py", line 1, in <module>
import dynamic_class # allows for sage.structure.dynamic_class?
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/structure/dynamic_class.py", line 119, in <module>
from sage.misc.cachefunc import weak_cached_function
File "cachefunc.pyx", line 421, in init sage.misc.cachefunc (sage/misc/cachefunc.c:17825)
File "function_mangling.pyx", line 39, in init sage.misc.function_mangling (sage/misc/function_mangling.c:3106)
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/misc/sageinspect.py", line 131, in <module>
from sage.env import SAGE_SRC
ImportError: cannot import name SAGE_SRC
It doesn't work with `sage [PATH TO SAGE FILE]`either:
Traceback (most recent call last):
File "socket.py", line 2, in <module>
from sage.all_cmdline import * # import sage library
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/all_cmdline.py", line 18, in <module>
from sage.all import *
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/all.py", line 54, in <module>
from sage.env import SAGE_ROOT, SAGE_DOC, SAGE_LOCAL, DOT_SAGE, SAGE_ENV
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/env.py", line 20, in <module>
import os, socket
File "/var/www/lingapps/assets/sage/socket.py", line 3, in <module>
_sage_const_102400 = Integer(102400); _sage_const_8888 = Integer(8888); _sage_const_0 = Integer(0); _sage_const_10 = Integer(10); _sage_const_1 = Integer(1)
NameError: name 'Integer' is not defined
I'm following the method explained at http://www.sagenb.org/doc/static/faq/faq-usage.html (How do I import Sage into a Python script?).
I assume it has something to do with the enviroment variables, but I can't seem to find any documentation about that on the Sage website so what to do?
I'm running Sage 5.13 on Debian - not installed via `apt-get`, just downloaded and unpacked.Thu, 17 Jul 2014 09:53:53 -0500http://ask.sagemath.org/question/23458/cant-run-python-script-in-sage-error-at-import-sageall/Answer by John Palmieri for <div class="snippet"><p>I only just figured out how to run Sage in a daemon/service-like kind of state - see <a href="http://ask.sagemath.org/question/23431/running-sage-from-other-languages-with-higher-performance">http://ask.sagemath.org/question/2343...</a> for the Sage script.</p>
<p>Now I'm trying to rewrite it to Python with Sage imports, so I can automatically start it with <code>sage -python [PATH TO PYTHON FILE]</code> as opposed to manually starting Sage and loading the script.</p>
<p>The fails with the following stack trace</p>
<pre><code>Traceback (most recent call last):
File "socket.py", line 1, in <module>
import socket
File "/var/www/lingapps/assets/sage/socket.py", line 4, in <module>
import sage.all
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/all.py", line 54, in <module>
from sage.env import SAGE_ROOT, SAGE_DOC, SAGE_LOCAL, DOT_SAGE, SAGE_ENV
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/env.py", line 84, in <module>
_add_variable_or_fallback('HOSTNAME', socket.gethostname())
AttributeError: 'module' object has no attribute 'gethostname'
</code></pre>
<p>This also happens when I have just a single line in the script: <code>import sage.all</code>.</p>
<p>It also fails with the following error if I just start <code>sage -python</code> and type <code>import sage.all</code>:</p>
<pre><code>Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/all.py", line 54, in <module>
from sage.env import SAGE_ROOT, SAGE_DOC, SAGE_LOCAL, DOT_SAGE, SAGE_ENV
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/env.py", line 20, in <module>
import os, socket
File "socket.py", line 6, in <module>
import sage.calculus.predefined
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/calculus/__init__.py", line 1, in <module>
import all
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/calculus/all.py", line 1, in <module>
from calculus import maxima as maxima_calculus
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/calculus/calculus.py", line 400, in <module>
from sage.rings.all import RR, Integer, CC, QQ, RealDoubleElement, algdep
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/rings/all.py", line 21, in <module>
from ring import Ring
File "ring.pyx", line 1, in init sage.rings.ring (sage/rings/ring.c:18156)
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/structure/__init__.py", line 1, in <module>
import dynamic_class # allows for sage.structure.dynamic_class?
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/structure/dynamic_class.py", line 119, in <module>
from sage.misc.cachefunc import weak_cached_function
File "cachefunc.pyx", line 421, in init sage.misc.cachefunc (sage/misc/cachefunc.c:17825)
File "function_mangling.pyx", line 39, in init sage.misc.function_mangling (sage/misc/function_mangling.c:3106)
File "/var/www/lingapps/assets/sage/local/lib/python2.7/site-packages/sage/misc/sageinspect.py", line 131, in <module>
from sage.env import SAGE_SRC
ImportError: cannot import name SAGE_SRC
</code></pre>
<p>It doesn't work with <code>sage [PATH TO SAGE FILE]</code>either:</p>
<pre><code>Traceback (most recent call last):
File "socket ...</code></pre><span class="expander"> <a>(more)</a></span></div> http://ask.sagemath.org/question/23458/cant-run-python-script-in-sage-error-at-import-sageall/?answer=23462#post-id-23462What is the file `/var/www/lingapps/assets/sage/socket.py` doing there? My guess is that this file is messing things up: Python (via Sage) is trying to load a module `socket` which ought to be found in `local/lib/python/socket.py`, but it is loading this other file instead. Two suggestions: move that file out of the Sage directory (don't add anything to the Sage directory, in fact), and don't name your own files with the same names as standard Python modules.
Thu, 17 Jul 2014 14:59:25 -0500http://ask.sagemath.org/question/23458/cant-run-python-script-in-sage-error-at-import-sageall/?answer=23462#post-id-23462Comment by Woodgnome for <p>What is the file <code>/var/www/lingapps/assets/sage/socket.py</code> doing there? My guess is that this file is messing things up: Python (via Sage) is trying to load a module <code>socket</code> which ought to be found in <code>local/lib/python/socket.py</code>, but it is loading this other file instead. Two suggestions: move that file out of the Sage directory (don't add anything to the Sage directory, in fact), and don't name your own files with the same names as standard Python modules.</p>
http://ask.sagemath.org/question/23458/cant-run-python-script-in-sage-error-at-import-sageall/?comment=23471#post-id-23471I just realised what you meant - being stupid here. Renaming it fixed it, cheers!Fri, 18 Jul 2014 09:52:28 -0500http://ask.sagemath.org/question/23458/cant-run-python-script-in-sage-error-at-import-sageall/?comment=23471#post-id-23471Comment by John Palmieri for <p>What is the file <code>/var/www/lingapps/assets/sage/socket.py</code> doing there? My guess is that this file is messing things up: Python (via Sage) is trying to load a module <code>socket</code> which ought to be found in <code>local/lib/python/socket.py</code>, but it is loading this other file instead. Two suggestions: move that file out of the Sage directory (don't add anything to the Sage directory, in fact), and don't name your own files with the same names as standard Python modules.</p>
http://ask.sagemath.org/question/23458/cant-run-python-script-in-sage-error-at-import-sageall/?comment=23470#post-id-23470So what happens if you rename the file to `my_socket.py` or `my_socket.sage` or something like that, so you don't get the conflict with Python's standard socket module?Fri, 18 Jul 2014 09:44:31 -0500http://ask.sagemath.org/question/23458/cant-run-python-script-in-sage-error-at-import-sageall/?comment=23470#post-id-23470Comment by Woodgnome for <p>What is the file <code>/var/www/lingapps/assets/sage/socket.py</code> doing there? My guess is that this file is messing things up: Python (via Sage) is trying to load a module <code>socket</code> which ought to be found in <code>local/lib/python/socket.py</code>, but it is loading this other file instead. Two suggestions: move that file out of the Sage directory (don't add anything to the Sage directory, in fact), and don't name your own files with the same names as standard Python modules.</p>
http://ask.sagemath.org/question/23458/cant-run-python-script-in-sage-error-at-import-sageall/?comment=23465#post-id-23465In the case of `sage -python [PATH TO PYTHON FILE]` `socket.py` is the actual Python script. In the case of `sage [PATH TO SAGE FILE]` Sage compiles the `socket.sage` to a Python file called - you guess it - `socket.py`! Removing this file would be the same as removing the entire script.Fri, 18 Jul 2014 02:38:37 -0500http://ask.sagemath.org/question/23458/cant-run-python-script-in-sage-error-at-import-sageall/?comment=23465#post-id-23465