我正在开发一个应用程序,其中穿插着大量的Jython和Java代码。由于程序使用wsadmin,我们受到Python 2.1的极大限制。
目前,我们有一个包含Java源代码和.py模块的jar文件。该代码目前是通过Java调用的,但我希望尽可能多地将功能迁移到Jython中,以消除Java的依赖。
我的问题是,我想从调用的Jython脚本中导入或执行现有jar文件中的Python模块。我已经尝试了几种不同的方法,但都没有成功。
我的目录结构如下:
我尝试的第一种方法是从jar包中导入。我将jar包添加到sys.path中,并尝试使用import com.example.action.myAction和import myAction来导入模块。然而,即使在每个级别的目录中放置了init.py文件,也没有成功。
我尝试的第二种方法是使用Java类加载资源。因此,我编写了以下代码:
目前,我们有一个包含Java源代码和.py模块的jar文件。该代码目前是通过Java调用的,但我希望尽可能多地将功能迁移到Jython中,以消除Java的依赖。
我的问题是,我想从调用的Jython脚本中导入或执行现有jar文件中的Python模块。我已经尝试了几种不同的方法,但都没有成功。
我的目录结构如下:
application.jar
|-- com
|--example
|-- action
|-- MyAction.class
|-- pre_myAction.py
我尝试的第一种方法是从jar包中导入。我将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"
这两个方法都失败了。我有点不知道该怎么继续下去了。有什么想法吗?
谢谢,
Trevor
scriptName
和scriptStr
的内容是什么? - badpzipimport
(http://docs.python.org/library/zipimport.html) 并查看底部的示例。当您编写init.py
时,是指__init__.py
,对吗? - mg.