Операторы импорта Jython с JSR-223 - PullRequest
1 голос
/ 30 марта 2012

Как мы можем использовать внешние модули Jython с JSR-223? (Предполагается, что какой-то модуль Python foo установлен с помощью pip или easy_install и следующий код Python работает с Jython)

Код Python: (jsr223_test.py)

import pyfoo

pyfoo.do_sth()

Java-код:

import javax.script.*;
import java.io.*;
import org.python.core.Py;
import org.python.core.PySystemState;

public class Main() {
    //BEGIN EDIT
    PySystemState engineSys = new PySystemState();
    engineSys.path.append(".");
    Py.setSystemState(engineSys);
    //END EDIT
    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine jython = mgr.getEngineByName("jython");
    jython.eval(new FileReader(new File("jsr223_test.py")));        
}

Это приводит к ImportError: нет модуля с именем pyfoo. Однако выполнение следующего в терминале завершается успешно.

jython jsr223_test.py

Любой совет?

Edit: Я догадался, что это проблема с classpath и скопировал файлы py из яиц в рабочий каталог моих приложений. Следуя http://wiki.python.org/jython/UserGuide#using-jsr-223, я также добавил этот путь к среде движка (как видно из кода между // BEGIN EDIT и // END EDIT), и он работал. Я также пытался добавить $ JYTHON_HOME / Lib / site-packages к пути, но он не работал, я не знаю почему.

...