Мой основной модуль был загружен с помощью 'execFile', затем я пытаюсь импортировать модуль .py, который находится в том же пакете, что и мой java-класс Runner, как основной .py модуль.
Но мне пока не удается.Мой сценарий:
My package structure:
/
/test/
/test/Runner.java
/test/myfirst.py
/test/mySecond.py
/test/__init__.py
In Runner.java:
InputStream mPython = getClass().getClassLoader().getResourceAsStream("test/myFirst.py" );
PythonInterpreter mInterp = new PythonInterpreter();
mInterp.execfile( mPython );
In myfirst.py
import sys
print sys.path
import mySecond
mySecond.hello()
In mySecond.py
def hello():
print "hi"
Я пробовал все виды вещей, смещения с тестом и т. Д., Но безуспешно.
Ниже выводится при запуске 'debug' из моего Java-проекта netbeans7.Мысль показать sys.path также.Может быть, это помогает получить решение
debug:
['D:\\....\\ext\\Lib', '__classpath__', '__pyclasspath__/']
Exception in thread "main" Traceback (most recent call last):
File "<iostream>", line 3, in <module>
ImportError: No module named mySecond
Java Result: 1
BUILD SUCCESSFUL (total time: 4 seconds)
Я предполагаю, что это связано с тем, что файлы .py не находятся на диске, а загружаются из моего пути к классам Java?Любые идеи приветствуются
ОБНОВЛЕНИЕ:
Взгляды имели более общую проблему.«Импорт ОС» даже не удалось.Мои настройки пути были неправильными.Указание на каталог lib, казалось, исправило это;
PySystemState mPyState = new PySystemState();
mPyState.path.insert(0,new PyString("C:\\jython2.5.1\\Lib"));
PythonInterpreter mInterp = new PythonInterpreter( null, mPyState );
Я думаю, что это приводит к вопросу;
Как я могу встроить jython в мое приложение, не устанавливая jython251 на мой жесткий диск (таким образом, встраивая каталог c: / jython251 / lib)?
Найден хорошийисточник о том, как работает импорт для Jython здесь