将 NumPy 与 JyNI 结合使用

Using NumPy with JyNI

我正在尝试将 Python 程序与 Java 一起使用。我的Python程序如下:

import CostCalculatorType
import os
from Evaluate.read_input_data import *

class CostCalculator(CostCalculatorType, object):

    def __init__(self):
        print 'Initializing'
        pass

    def calculateCost(self, chromosome):
        inputData = ReadInputData(chromosome, 'input_data.txt')
        return inputData

我是从 Java 界面调用的。 我正在使用 JyNI.org 中指定的以下命令:

java -cp /home/ch/jython.jar:/home/ch/JyNI.jar org.python.util.jython CostCalculator.py

java Main

我收到以下错误:

File "/home/ch/CostCalculator.py", line 18, in calculateCost
    inputData = ReadInputData(chromosome, 'input_data.txt')
File "/usr/lib/python2.6/site-packages/Evaluate/read_input_data.py", line 21, in __init__
    self.info = infoClass(0, [], [], 0.02)
File "/usr/lib/python2.6/site-packages/Evaluate/infoClass.py", line 7, in __init__
    import numpy
ImportError: No module named numpy

NumPy 可以用 JyNI 导入吗?

这有点像 How to setup numpy in jython 的副本。 为了方便起见,我将从那里重复我的回答:

JyNI 确实将 NumPy 支持作为其主要目标,但还不能做到,只要它仍处于 alpha 状态。但是,在它足够成熟之前,您可以通过

使用 NumPy

或者,您可以使用 Java 数值库进行计算,例如其中之一:

两者都是 Java-libs,由 blas 或 lapack 原生支持进行数值处理(即 NumPy 使用相同的后端),因此性能应该或多或少与 NumPy 相当。然而,它们不像 NumPy 那样具有如此出色的多数组实现。

如果您需要 NumPy 间接满足某些其他框架的依赖项,这些解决方案不会开箱即用。如果依赖关系很小,您可以 rewrite/substitute 基于指定项目之一的相应调用。否则你就得等JyNI了...

如果您可以通过这种方式在 Jython 上制作一些框架 运行,请考虑公开您的作品,最好是作为框架的一个分支。