configuración de la ruta del módulo de importación en Jython - comportamiento extraño
Estoy construyendo Java para clase de puente Jython. La tarea que estoy tratando de resolver es hacer que Jython busque módulos de python en el directorio de trabajo de mi aplicación (también conocido como directorio de ejecución de programas).
Lo estoy haciendo añadiendoSystem.getProperty("user.dir")
valor para el sys.path:
pySysState = new PySystemState();
//add working directory into sys.path
pySysState.path.append(new PyString(System.getProperty("user.dir")));
log_.info("Jython sys state initialized. sys.path: " + this.pySysState.path);
Me sale la excepción ImportError:
python module 'user_module' was not found. sys.path: ['<other jars>\\Lib', '/<path to jython>/Lib', '__classpath__', '__pyclasspath__/', 'C:\\Users\\vvlad\\IDEAProjects\\transform']
ImportError: No module named scheduled_helper
at org.python.core.Py.ImportError(Py.java:290)
at org.python.core.imp.import_first(imp.java:750)
at org.python.core.imp.import_name(imp.java:834)
...
DóndeC:\\Users\\vvlad\\IDEAProjects\\transform
es el directorio de aplicaciones.
Ensys.path
tiene este aspecto:
La importación funciona bien cuando especifico manualmente la ruta completa al directorio de trabajo en la variable python.path del registro Jython. Ysys.path
se ve diferente:
>>sys.path: ['C:\\Users\\vvlad\\IDEAProjects\\transform', '<other jars path>\\Lib', '/<path to jython>/jython-2.5.2.jar/Lib', '__classpath__', '__pyclasspath__/', ]
Así que la importación funciona bien cuando el directorio de trabajo se presenta como una primera entrada ensys.path
. Pero falla cuando el directorio de trabajo es la última entrada.
Estoy usando Jython 2.5.2 y ejecuto pruebas en una máquina Windows desde el entorno IntelliJ IDEA.
El plan B para mí sería configurar el registro python.path de Jython conuser.dir
valor antes de inicializarPySysState
- Pero esto introduciría algún comportamiento oculto.