vpython 无法在 Linux 的 Windows 子系统上运行

vpython 无法在 Linux 的 Windows 子系统上运行

我正在尝试运行一个简单的代码维基百科检查模块是否一切正常。我的代码如下:

from vpython import *

scene=canvas()
scene.width=550
scene.height=550
scene.height=580
scene.range=2
ball=sphere(pos=vec(0,0,0),radius=0.8,color=color.orange) 

我使用命令运行它:python3 foo.py。但是此后,程序冻结,当我终止该进程时,我收到以下回溯:

   Exception ignored in: <bound method standardAttributes.__del__ of <vpython.vpython.sphere object at 0x7f25192959e8>>
Traceback (most recent call last):
  File "/home/kuba_unix/.local/lib/python3.5/site-packages/vpython/vpython.py", line 1105, in __del__
    super(standardAttributes, self).__del__()
  File "/home/kuba_unix/.local/lib/python3.5/site-packages/vpython/vpython.py", line 315, in __del__
    cmd = {"cmd": "delete", "idx": self.idx}
AttributeError: 'sphere' object has no attribute 'idx'

但我不知道这是否是问题所在。我在 Windows 10 上工作并使用适用于 Linux 的 Windows 子系统。对于绘图,我使用 Xming 窗口并在 bash 控制台中使用设置显示export DISPLAY=:0。直到今天,我都没有遇到任何绘图问题(gnuplot 和 matplotlib 工作得很好)。有关其他信息,我使用的是 Python 3.5.2,vpython 的版本是 ['7.5.0', 'jupyter'](导入模块不会引发任何错误)。这个程序的结果应该是这样的在这个例子中

答案1

所需步骤:

  • 安装软件包:sudo apt install python3 python3-pip
  • 安装 vpython 模块:pip3 install --user vpython
  • 运行python文件:python3 ./foo.py
  • 从命令提示符中的命令获取 TCP/IP 端口号 netstat -abno。或者使用资源监视器、Sysinternals 的 TCPView 等作为 GUI。以下是 ResMon 的屏幕截图:

resmon-opend-ports-python]

  • 在 Windows 中打开任意浏览器。输入 URL 为localhost:port_number。例如,在图像中localhost:49669。第一个端口用于查看图像,后面一个用于关闭连接。

图像通过 TCP/IP 链接提供。因此,这里不需要 Xserver。尽管 Windows 防火墙可能不会阻止连接,但可以在防火墙中打开端口(如果被阻止)。

相关内容