VPython Common Errors and Troubleshooting: Difference between revisions

From Physics Book
Jump to navigation Jump to search
No edit summary
No edit summary
Line 48: Line 48:


  from visual.graph import *
  from visual.graph import *
==="The function ‘CGContextErase’ is obsolete"===
Users on Mac OS X may see this message printed whenever they run a VPython program:
The function ‘CGContextErase’ is obsolete and will be removed in an upcoming update. Unfortunately, this application, or a library it uses,
is using this obsolete function, and is thereby contributing to an overall degradation of system performance.
This message can be ignored and will have no impact on the running of your program.


== Syntax Errors ==
== Syntax Errors ==

Revision as of 12:00, 3 December 2015

(Lucas Christian, page 1 of 2)

This reference lists out some common errors I've seen students encounter while working in VPython. Programming languages can often generate obscure and confusing error messages, and VPython is no exception.

System/Environment Errors

If your system is not set up correctly, or the environment you are running VPython code is incorrect, a number of mysterious errors can result.

VPython does not start or immediately freezes

Make sure you are running your code in VIDLE (not the identical-looking IDLE).

Use VIDLE instead of IDLE to avoid errors and crashes.

With the most current releases of VPython, code compiles and launches fine in IDLE, but the graphics window comes up grey and hangs. This is because of a bug in the way regular IDLE executes code, it has difficulty with programs that keep running in a loop, as VPython does so you can drag and zoom the display.

Note that if you double-click a .py file in Windows Explorer or Finder, it may open up in the regular IDLE instead of VIDLE. To check if your code is open in VIDLE, click the "Help" menu and look for the "VPython" menu item. Regular IDLE does not have a "VPython" item in the Help menu.

ImportError: No module named *

Traceback (most recent call last):
  File "/my/documents/folder/vectors.py", line 1
    from future import division
ImportError: No module named future

Python has only a small number of built-in functions. The rest are stored in "modules" that you can load when you need them. The from (blank) import (blank) lines tell Python to import the named functions from a specific module. When you import a module, Python searches various folders on your computer to find the requested module. If it cannot find a module with that name, you get an ImportError.

Cause #1: You made a typo in the module name.

The basic boilerplate for VPython programs written in this class:

from __future__ import division
from visual import *

Often missed are the two underscores ( _ _ ) not separated by a space before and after future. Check that this is correct, or copy-and-paste from above.

Cause #2: VPython is not installed correctly.

It is possible the module actually does not exist on your system. The VPython installer should install all the needed modules into the module folder for Python 2.7. If you have a different version of Python installed, it will not be able to find the modules. Make sure to follow the instructions on the VPython website, and install Python 2.7 from python.org as suggested.

NameError: name '*' is not defined

This is often indicative of a missing import statement. Make sure your code begins with the boilerplate code above.

If you are using the graph functions, you will also need:

from visual.graph import *

"The function ‘CGContextErase’ is obsolete"

Users on Mac OS X may see this message printed whenever they run a VPython program:

The function ‘CGContextErase’ is obsolete and will be removed in an upcoming update. Unfortunately, this application, or a library it uses, 
is using this obsolete function, and is thereby contributing to an overall degradation of system performance.

This message can be ignored and will have no impact on the running of your program.

Syntax Errors

(work in progress; will cover common syntax errors)

Runtime Errors

(work in progress; will cover various messages involving errors in vector operations, etc.)