Обратил на одну неприятную вещь, вот простой пример кода:
Код: Выделить всё
from sympy import symbols
from sympy import latex
from sympy import integrate
from sympy import exp
x, a = symbols('x a')
print latex(integrate(x**3*exp(a*x),x))
from sympy import *
x, a = symbols('x a')
print latex(integrate(x**3*exp(a*x),x))
При выполнении команды: python file.py >file.py.out
в файле присутствует примерно следующее:
Код: Выделить всё
[?1034h\begin{bmatrix}- \frac{1}{2} y - \frac{1}{2} \sqrt{y^{2} - 4 z}, & - \frac{1}{2} y + \frac{1}{2} \sqrt{y^{2} - 4 z}\end{bmatrix}
Как видите в начале вывода присутствует escape-символ
выполнив : strace -o trace.txt python file.py
получил следующее
Spoiler
open("/usr/lib64/python2.7/site-packages/sage/libs/symmetrica/all.pyc", O_RDONLY) = -1 ENOENT (No such file or directory)
fstat(15, {st_mode=S_IFREG|0644, st_size=4895, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3028d7d000
read(15, "#from symmetrica import *\n\nfrom "..., 4096) = 4096
read(15, " as t_POLYNOM_MONOMIAL\n\nfrom sym"..., 4096) = 799
read(15, "", 4096) = 0
unlink("/usr/lib64/python2.7/site-packages/sage/libs/symmetrica/all.pyc") = -1 ENOENT (No such file or directory)
open("/usr/lib64/python2.7/site-packages/sage/libs/symmetrica/all.pyc", O_WRONLY|O_CREAT|O_EXCL|O_TRUNC, 0100644) = -1 EACCES (Permission denied)
stat("/usr/lib64/python2.7/site-packages/sage/libs/symmetrica/symmetrica", 0x7fff23959520) = -1 ENOENT (No such file or directory)
open("/usr/lib64/python2.7/site-packages/sage/libs/symmetrica/symmetrica.so", O_RDONLY) = 16
fstat(16, {st_mode=S_IFREG|0755, st_size=240168, ...}) = 0
open("/usr/lib64/python2.7/site-packages/sage/libs/symmetrica/symmetrica.so", O_RDONLY) = 17
read(17, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000}\0\0\0\0\0\0"..., 832) = 832
fstat(17, {st_mode=S_IFREG|0755, st_size=240168, ...}) = 0
mmap(NULL, 2337136, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 17, 0) = 0x7f300cf0a000
mprotect(0x7f300cf3c000, 2093056, PROT_NONE) = 0
mmap(0x7f300d13b000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 17, 0x31000) = 0x7f300d13b000
close(17) = 0
open("/etc/ld.so.cache", O_RDONLY) = 17
fstat(17, {st_mode=S_IFREG|0644, st_size=253136, ...}) = 0
mmap(NULL, 253136, PROT_READ, MAP_PRIVATE, 17, 0) = 0x7f3028cbe000
close(17) = 0
open("/usr/lib64/libsymmetrica-2.0.so", O_RDONLY) = 17
read(17, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\357\3\0\0\0\0\0"..., 832) = 832
fstat(17, {st_mode=S_IFREG|0755, st_size=11825792, ...}) = 0
mmap(NULL, 13924280, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 17, 0) = 0x7f300c1c2000
mprotect(0x7f300cd03000, 2097152, PROT_NONE) = 0
mmap(0x7f300cf03000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 17, 0xb41000) = 0x7f300cf03000
mmap(0x7f300cf09000, 1976, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f300cf09000
close(17) = 0
mprotect(0x7f300cf03000, 4096, PROT_READ) = 0
mprotect(0x7f300d13b000, 4096, PROT_READ) = 0
munmap(0x7f3028cbe000, 253136) = 0
close(16) = 0
times({tms_utime=70, tms_stime=29, tms_cutime=0, tms_cstime=0}) = 4297297769
write(1, "\33[?1034h", 8) = 8
close(15) = 0
из вывода так понял что виной выступает пакет sage сборка под gentoo из Layman sage-on-gentoo overlay
удалив emerge -C sage данный символ больше не появлялся.
Собственно хотел узнать, почему так получается, и можно ли это как то вылечить. А то боюсь что придется писать свой ебилд, для сборки sage в отдельном каталоге, сейчас пока времени нет на это.