tutorial example java python interop jython

java - example - jython tutorial



Módulos Jython y python (4)

Verifica tu jython sys.path. Asegúrese de que la biblioteca que desea cargar esté en esta ruta. Mira jython faq para más detalles.

¡Acabo de empezar a utilizar PythonInterpreter desde dentro de mis clases de Java y funciona muy bien! Sin embargo, si trato de incluir módulos de python ( re , HTMLParser , etc.), recibo la siguiente excepción (por re ):

Exception in thread "main" Traceback (innermost last): File "", line 1, in ? ImportError: no module named re

¿Cómo puedo hacer que las clases del jython jar "vean" los módulos que python tiene disponibles?


Incrustas jython y usarás algunos Python-Modules algunos:

si desea establecer la ruta (sys.path) en su código Java:

public void init() { interp = new PythonInterpreter(null, new PySystemState()); PySystemState sys = Py.getSystemState(); sys.path.append(new PyString(rootPath)); sys.path.append(new PyString(modulesDir)); }

Py está en org.python.core.

¡rootPath y modulesDir es donde USTED quiere!

deje que el punto de rootPath ubique el estándar-jython-lib

Eche un vistazo a src / org / python / util / PyServlet.java en el código Jython-Source, por ejemplo


De acuerdo con las preguntas frecuentes :

4.1 ¿Qué partes de la biblioteca de Python son compatibles?

La buena noticia es que Jython ahora es compatible con una gran mayoría de la biblioteca estándar de Python. La mala noticia es que esto se ha movido tan rápido que es difícil mantener la documentación actualizada.

Los módulos incorporados (por ejemplo, los que están escritos en C para CPython) son una historia diferente. Estos deberían ser portados a Java, o implementados con un puente JNI para ser utilizados por Jython. Algunos módulos incorporados han sido portados a JPython, principalmente cStringIO, cPickle, struct y binascii. Sin embargo, es poco probable que los módulos JNI se incluyan en Jython.

Si desea usar un módulo Python estándar, simplemente intente importarlo. Si eso funciona, probablemente ya estás listo. También puede hacer un dir () en los módulos para verificar la lista de funciones que implementa.

Si hay algún módulo estándar de Python del que tenga una necesidad real que aún no funcione con Jython, envíenos un correo.

En otras palabras, puede usar directamente los módulos de Python desde Jython, a menos que esté tratando de usar módulos integrados, en cuyo caso se quedará bloqueado con lo que haya sido portado a Jython.