Как мы можем использовать внешние модули 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 к пути, но он не работал, я не знаю почему.