Я работаю над приложением, которое перемежает кучу jython и java-кода. Из-за характера программы (использующей wsadmin) мы действительно ограничены Python 2.1
В настоящее время у нас есть jar-файл, содержащий как java source, так и .py модули. Код в настоящее время вызывается с использованием java, но я бы хотел убрать это, чтобы перенести как можно больше функциональных возможностей на jython.
Проблема, с которой я столкнулся, заключается в том, что я хочу импортировать или выполнять модули python внутри существующего jar-файла из вызывающего jython-скрипта. Я попробовал несколько разных способов без успеха.
Моя структура каталогов выглядит так:
application.jar
|-- com
|--example
|-- action
|-- MyAction.class
|-- pre_myAction.py
Первый подход, который я попробовал, заключался в импорте из банки. Я добавил jar в sys.path и попытался импортировать модуль, используя import com.example.action.myAction и import myAction . Однако безуспешно, даже когда я помещаю init .py файлы в каталог на каждом уровне.
Второй подход, который я попробовал, состоял в том, чтобы загрузить ресурс, используя класс java. Поэтому я написал следующий код:
import sys
import os
import com.example.action.MyAction as MyAction
scriptName = str(MyAction.getResource('/com/example/action/myAction.py'))
scriptStr = MyAction.getResourceAsStream('/com/example/action/myAction.py')
try:
print execfile(scriptStr)
except:
print "failed 1"
try:
print execfile(scriptName)
except:
print "failed 2"
Оба из них не удалось. Я сейчас немного растерялся относительно того, как мне поступить. Есть идеи?
ура
Тревор