Jak mogę dynamicznie dodawać jars do jython, wewnątrz skryptu?

Piszę pakiet w Pythonie, który rozmawia z serwerem ldap. Chcę, żeby działało w CPython i Jython. Aby go uruchomić z CPython, z powodzeniem kodowałem w Pythonie-ldap. Jednak, aby to działało z Jython, muszę użyć java jar.

Jak mogę dystrybuować plik JAR z moim pakietem, tak że jeśli potrafi "zaimportować Javę", zna swój jython i dynamicznie dodaje jar Javy do ścieżki i wykorzystuje GO. Jednak jeśli to się nie powiedzie, zna swój CPython i używa biblioteki python-ldap.

Jakieś pomysły?

 13
Author: gregturn, 2009-11-13

1 answers

Po prostu dodaj swój słoik do sys.path, like this:

~ $ jython
Jython 2.5.0+ (trunk:6691, Aug 17 2009, 17:09:38) 
[Java HotSpot(TM) Client VM (Apple Computer, Inc.)] on java1.6.0-dp
Type "help", "copyright", "credits" or "license" for more information.
>>> from org.thobe.somepackage import SomeClass # not possible to import yet
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named thobe
>>> import sys
>>> sys.path.append("/var/javalib/some-thobe-package.jar") # add the jar to your path
>>> from org.thobe.somepackage import SomeClass # it's now possible to import the package
>>> some_object = SomeClass() # You can now use your java class

Nie mogło być łatwiej:)

W Twoim przypadku prawdopodobnie chcesz użyć ścieżki swojej paczki, aby znaleźć słoik:

# yourpackage/__init__.py

import sys, os
if 'java' in sys.platform.lower():
    sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)),
                                 "your-lib.jar"))
    from jython_implementation import library
else:
    from cpython_implementation import library
Mam nadzieję, że to pomoże!
 25
Author: thobe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-14 13:29:23