在PyCharm中使用VPython

4 投票
3 回答
7209 浏览
提问于 2025-04-18 17:50

我的物理课要求我使用VPython来制作模型等。我很喜欢把代码和物理结合在一起的想法,而且VPython整体看起来也不错,但VPython真的希望你使用他们的IDLE版本——VIDLE,作为你的开发环境。

我想在我最喜欢的Python开发环境PyCharm中使用它。如果我运行一个使用VPython模块的脚本,而这个脚本在VIDLE中可以正常工作,我就会遇到一个错误:

ImportError: No module named visual

我可以去PyCharm的项目解释器页面,在那里看起来我应该能够添加和删除模块,但我搞不清楚怎么做。如果我点击添加/安装包,它会弹出一个可以搜索的可用包列表(是来自PyPi数据库的,对吧?),但VPython不在这个列表中。

看起来VPython由三个模块组成,分别是“vis”、“visual”和“visual_common”,还会安装其他模块“numpy”(已经安装)、“FontTools”、“Polygon”和“ttfquery”。

有什么想法吗?希望这只是一些简单的问题。

3 个回答

0

在使用这个包之前,你需要在Pycharm里安装vpython这个包。

接下来,你可以这样写代码:from vpython import *,然后用ball = sphere()来创建一个球体。

2

现在你可以在python3.4中使用vpython了。按照以下步骤操作:

准备工作

首先,去http://www.lfd.uci.edu/~gohlke/pythonlibs/下载四个包:TTFQueryFontToolsPolygonvpython,把它们放在同一个文件夹里。

安装步骤

  1. 打开命令提示符(cmd)
  2. 输入 cd path/to/package_downloaded_directory,把路径换成你下载包的文件夹路径
  3. 输入 pip install packagename.whl,把packagename换成你下载的包的名字
  4. 找到文件 C:\Python34\lib\site-packages\vis\materials.py
  5. 用编辑器打开这个文件,然后找到第70行
  6. 把这两行代码注释掉,像这样:
class raw_texture(cvisual.texture):
      def __init__(self, **kwargs):
          cvisual.texture.__init__(self)
#              for key, value in kwargs.items():
#                  self.__setattr__(key, value)
  1. 保存修改

注意,当你用vpython写脚本时,第一行代码必须是:

from vis import *

下面是我的代码示例:

from vis import *  
sphere(pos=vector(0,0,0),radius=0.5,color=color.red)
arrow(pos=vector(0.5,0,0),axis=vector(1,0,0),color=color.green)
2

很遗憾,你不能像安装普通的Python包那样轻松安装vpython。这个过程要复杂得多。不过,如果你想在PyCharm中开发,还是可以做到的。

首先,你需要在Windows上安装vpython。这通常会把它安装到你主要的Python安装目录下的一个包里。

你可以从这里安装 -> http://vpython.org/contents/download_windows.html

安装完成后,简单选择一个已经安装了vpython的Python版本。

如果你想创建一个虚拟环境,可以使用 --system-site-packages 这个选项来做:

 $ virtualenv --help                                                                                         [12:51:06]
Usage: virtualenv [OPTIONS] DEST_DIR

Options:
  --version             show program's version number and exit
  (...)
  --no-site-packages    DEPRECATED. Retained only for backward compatibility.
                        Not having access to global site-packages is now the
                        default behavior.
  --system-site-packages
                        Give the virtual environment access to the global
                        site-packages.
  (...)

撰写回答