importar paquetes javax en python

Tengo (lo que espero sea) una pregunta muy simple.

Me gustaría usar algunas clases javax.crypto desde dentro de un script de Python, para poder hacer algo como:

from javax.crypto import Cipher

cipher = Cipher.getInstance('AES/CTR/NoPadding')

Pero no estoy familiarizado con cómo hacer esto para que Python pueda reconocer los paquetes de Java, en este momento Python, por supuesto, simplemente dice:

ImportError: ningún módulo llamado javax.crypto

¿Es simplemente un caso de agregar alguna variable a $ PYTHONPATH o es completamente incorrecto?

Muchas gracias, Chris

preguntado el 16 de mayo de 11 a las 17:05

Es posible que desee ver Jython (el lenguaje Python implementado en Java). Aparte de eso, es desconcertante por qué esperarías que esto funcione. Las clases de Java se compilan por bytes en una forma que puede ser cargada e interpretada por una máquina virtual Java (máquina virtual) mientras que la implementación más común de Python (CPython) es un intérprete para la máquina nativa. -

"¿O esto está completamente mal?" --- Estoy pensando que su pregunta se enmarca en algunos conceptos erróneos fundamentales sobre cómo funcionan Java y los ejecutables nativos en su sistema. -

@Jim: En realidad, CPython también usa una máquina virtual. No suele tener un JITer como suelen tener las máquinas virtuales Java. -

@Ignacio: Soy consciente de que CPython implementa una VM; sin embargo, no está destinado a ser compatible con la máquina virtual de Java y no se puede esperar razonablemente que CPython interprete los códigos de bytes de Java (aunque Python también implementa su propia compilación de códigos de bytes) -

2 Respuestas

Está completamente mal. Python y Java son lenguajes separados y CPython, la implementación que está utilizando, tiene su propia VM. Utilizar Jython si quieres unir los dos.

contestado el 16 de mayo de 11 a las 21:05

En jython, usa la sintaxis que describe. Los tipos básicos (cadenas, entradas, flotantes) son convertidos automáticamente por jython cuando se pasa de un código .py a java. Si desea procesar sus propios objetos, debe comenzar a escribir envoltorios de interfaz.

C:\>SET PATH=C:\jython2.5.2\bin;%PATH%

C:\>jython
Jython 2.5.2 (Release_2_5_2:7206, Mar 2 2011, 23:12:06)
[Java HotSpot(TM) Client VM (Sun Microsystems Inc.)] on java1.6.0_24
Type "help", "copyright", "credits" or "license" for more information.
>>> from javax.crypto import Cipher
>>> cipher = Cipher.getInstance('AES/CTR/NoPadding')
>>> cipher
javax.crypto.Cipher@1296d1d
>>>

contestado el 16 de mayo de 11 a las 21:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.