2013-07-13 5 views
0

Я работаю на сервере, который сделан на Java. В определенные моменты времени (например, кто-то нажимает на объект в игре, например), сервер загрузит скрипт, созданный с помощью Jython. У меня возникли проблемы с работой скрипта, главным образом потому, что один из них импортирует модуль случайным образом. Вот сценарий:Jython no module named random

from resources.common import RadialOptions 

import sys 
import random 

def createRadial(core, owner, target, radials): 

radials.add(RadialOptions(0, 21, 1, '')) #Use 
radials.add(RadialOptions(0, RadialOptions.diceRoll, 3, '@dice/dice:dice_roll_single')) 

return 

def handleSelection(core, owner, target, option): 
    if option == RadialOptions.diceRoll or 21: 
    stringOptions = ['red', 'blue'] 
    owner.sendSystemMessage('Your chance cube rolled the color ' + random.choice(stringOptions) , 0) 
return 

Когда сервер загружен и скрипт называется, я получаю сообщение об ошибке импорта говоря нет модуля с именем «случайным». Не имеет значения, какой модуль я называю существующим в Jython/Python, он не будет содержать ничего, кроме классов sys и java.

Затем я пошел вперед и открыл консоль PyDev и попытался выяснить, удалось ли мне импортировать случайные данные. Это было успешно.

Почему пульт PyDev позволяет мне импортировать случайный или любой другой модуль, но не сервер, когда он вызывает сценарий?

ответ

2

Try в Pydev ввода:

import sys 
print sys.path 

затем добавить же в скрипт - перед проблемой и сравнить два, если они одинаковы в обоих случаях искать элементы как для случайного на локальный машина и сервер, на котором работает ваш сервер.

+0

Это сделало трюк! Похоже, sys.path был в NGECore2 \ lib \ Lib, которого даже не было. Я просто пошел вперед и добавил random.py, и теперь все работает. Благодаря! – Waverunner