2017-01-23 11 views
0

Я пытаюсь установить vpython с python3.5 на окнах 10.Установка и запуск vpython с Python 3.5 на Windows 10

Я использовал следующие команды в CMD:

pip install vpython 
pip install update --ipython 

Если я попробуйте запустить некоторый vpython код (копируется из интернета, чтобы имитировать движение снаряда):

from vpython import * 
from math import sin, cos 

initialHeight = 4.6 
initialVelocity = 24 
Angle = 65 

#Set up the display window 
scene1 = display(title = "Projectile Motion for the uninitiated", 
       x=0,y=0, width=800, height=600, 
       range=10, background=colour.white, 
       center = (10,initialHeight,0)) 

#Create objects 
table = box(pos=(-1,initialHeight - 1,0), size=(5,1,4)) 
ball1 = sphere(pos=(0,initialHeight,0),radius=1, 
       color=color.green, make_trail = true) 

ball2 = sphere(pos=(0,initialHeight,0),radius=1, 
       color=color.red, make_trail = true) 

floor = box(pos=(0,0,0), size =(100,0.25,10)) 

t=0 
dt=0.01 
g=-32 #ft/s**2 

Fgrav = vector(0,g*dt,0) 

#velocity vector for ball1 
ball1v = vector(initialVelocity*cos(Angle*pi/180), 
       initialVelocity*sin(Angle*pi/180),0) 

#This loop puts it into motion 
while True: 
    rate(30) #speeds it up 
    ball1v = ballv + Fgrav 
    ball1.pos += ball1.v*dt 

    ball2.pos = (initialVelocity*cos(Angle*pi/180)*t, 
       initialHeight + initialVelocity*t*sin(Angle*pi/180) - 16*t**2) 
    if ball1.y < 0: #when ball hits floor 
     print("ball1.pos = ", ball1.pos, "t = ", t) 
     print("ball2.pos = ", ball2.pos, "t = ", t) 
     break 

Когда я запускаю это я затем получить следующие ошибки:

Traceback (most recent call last): 


File "C:/Users/yours_truly/Google Drive/Python/projectile motion.py", line 1, in <module> 
    from vpython import * 
    File "C:\Users\yours_truly\AppData\Local\Programs\Python\Python35-32\lib\site-packages\vpython\__init__.py", line 10, in <module> 
    from .vpython import * 
    File "C:\Users\yours_truly\AppData\Local\Programs\Python\Python35-32\lib\site-packages\vpython\vpython.py", line 442, in <module> 
    get_ipython().kernel.comm_manager.register_target('glow', GlowWidget) 
AttributeError: 'NoneType' object has no attribute 'kernel' 

Я не могу понять проблему здесь, и я не могу осмыслить дискуссии об этом, которые я нашел в Интернете. Может ли кто-нибудь сказать мне, что счет здесь? Является ли vpython несовместимым с python 3.5 (который я читал в некоторых местах), или есть обходное решение (которое я также читал в других местах)?

спасибо.

+0

Вы пытались выполнить команду импорта на терминале iPython? –

ответ

0

Не могу вспомнить, когда стала доступна поддержка Python 3.5; это, безусловно, поддерживается сейчас. Но проблема может быть связана с тем, что программа имеет ряд ошибок. Вот версия, которая работает, в том числе с Python 3.5 в Windows 10. Корректировки должны были изменить true -> True, bal

from vpython import * 
from math import sin, cos 

initialHeight = 4.6 
initialVelocity = 24 
Angle = 65 

#Set up the display window 
scene1 = display(title = "Projectile Motion for the uninitiated", 
       x=0,y=0, width=800, height=600, 
       range=10, background=color.white, 
       center = (10,initialHeight,0)) 

#Create objects 
table = box(pos=vec(-1,initialHeight - 1,0), size=vec(5,1,4)) 
ball1 = sphere(pos=vec(0,initialHeight,0),radius=1, 
       color=color.green, make_trail = True) 

ball2 = sphere(pos=vec(0,initialHeight,0),radius=1, 
       color=color.red, make_trail = True) 

floor = box(pos=vec(0,0,0), size =vec(100,0.25,10)) 

t=0 
dt=0.01 
g=-32 #ft/s**2 

Fgrav = vector(0,g*dt,0) 

#velocity vector for ball1 
ball1v = vector(initialVelocity*cos(Angle*pi/180), 
       initialVelocity*sin(Angle*pi/180),0) 

#This loop puts it into motion 
while True: 
    rate(30) #speeds it up 
    ball1v = ball1v + Fgrav 
    ball1.pos += ball1v*dt 
    ball2.pos = vec(initialVelocity*cos(Angle*pi/180)*t, 
       initialHeight + initialVelocity*t*sin(Angle*pi/180) - 16*t**2,0) 
    if ball1.pos.y < 0: #when ball hits floor 
     print("ball1.pos = ", ball1.pos, "t = ", t) 
     print("ball2.pos = ", ball2.pos, "t = ", t) 
     break