我最近尝试在 python 中使用 Asymptote。按照这里的指示:http: //asymptote.sourceforge.net/doc/Interactive-mode.html,在最底部,它说将asymptote.py
文件放在 python 路径上。我已经这样做了,但是当我尝试执行一些代码时,它给出了错误(python 安装在C:\Python27
,而asymptote.py
安装在C:\Python27\Lib\site-packages
):
-: 4.1: syntax error
error: could not load module '-'
里面的代码asymptote.py
贴在这里:
# Python module to feed Asymptote with commands
# (modified from gnuplot.py)
from subprocess import *
class asy:
def __init__(self):
self.session = Popen(['asy', '-quiet', '-interactive'], stdin=PIPE)
self.help()
def send(self, cmd):
self.session.stdin.write(cmd+'\n')
self.session.stdin.flush()
def size(self, size):
self.send("size(%d);" % size)
def draw(self, str):
self.send("draw(%s);" % str)
def fill(self, str):
self.send("fill(%s);" % str)
def clip(self, str):
self.send("clip(%s);" % str)
def label(self, str):
self.send("label(%s);" % str)
def shipout(self, str):
self.send("shipout(\"%s\");" % str)
def erase(self):
self.send("erase();")
def help(self):
print "Asymptote session is open. Available methods are:"
print " help(), size(int), draw(str), fill(str), clip(str), label(str), shipout(str), send(str), erase()"
def __del__(self):
print "closing Asymptote session..."
self.send('quit');
self.session.stdin.close();
self.session.wait()
if __name__=="__main__":
g = asy()
g.size(200)
g.draw("unitcircle")
g.send("draw(unitsquare)")
g.fill("unitsquare, blue")
g.clip("unitcircle")
g.label("\"$O$\", (0,0), SW")
raw_input("press ENTER to continue")
g.erase()
del g
我的代码:
from asymptote import *
g=asy()
g.size(200)
g.draw("unitcircle")
g.send("draw(unitsquare)")
g.fill("unitsquare, blue")
g.clip("unitcircle")
g.label("\"$O$\", (0,0), SW")
我知道这asymptote.py
只是为了向 提供命令asy.exe
,并且我已经Asymptote
安装在我的计算机上。如何解决此错误?