Moduły Jython i python

Właśnie zacząłem używać PythonInterpreter z moich klas Javy i działa świetnie! Jeśli jednak spróbuję włączyć Moduły Pythona (re, HTMLParser, itd.), Otrzymuję następujący wyjątek (dla re):

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

Jak mogę sprawić, by klasy z Jython jar "zobaczyły" dostępne moduły Pythona?

Author: Michael Myers, 2009-01-23

4 answers

Osadzasz jython i będziesz używał niektórych modułów Pythona:

Jeśli chcesz ustawić ścieżkę (sys.path) w Twoim kodzie 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 jest w org.python.rdzeń.

RootPath i modulesDir jest tam, gdzie chcesz !

Let rootpath point where you located the standard-jython-lib

Spójrz na src / org/python/util / PyServlet.java w kodzie źródłowym Jython na przykład

 17
Author: Blauohr,
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
2010-04-04 09:09:17

Zgodnie z FAQ :

4.1 jakie części biblioteki Pythona są obsługiwane?

Dobra wiadomość jest taka, że Jython obsługuje teraz znaczną większość standardowej biblioteki Pythona. Zła wiadomość jest taka, że tak szybko się to zmieniło, że trudno jest aktualizować dokumentację.

Wbudowane moduły (np. te, które są napisane w C Dla CPython) to inna historia. Trzeba by je przeportować do Javy lub zaimplementować za pomocą JNI bridge w celu do wykorzystania przez Jythona. Niektóre wbudowane moduły zostały przeniesione do JPython, w szczególności cStringIO, cPickle, struct i binascii. Jest mało prawdopodobne, aby Moduły JNI zostały uwzględnione w Jython proper.

Jeśli chcesz użyć standardowego modułu Pythona, po prostu spróbuj go zaimportować. Jeśli to zadziała, pewnie wszystko gotowe. Możesz również wykonać dir() na modułach, aby sprawdzić listę implementowanych funkcji.

Jeśli istnieje jakiś standardowy moduł Pythona, którego naprawdę potrzebujesz to nie działa z Jython jeszcze, proszę wysłać do nas maila.

Innymi słowy, ty możesz bezpośrednio używać modułów Pythona z Jython, chyba że próbujesz użyć wbudowanych modułów, w którym to przypadku utknąłeś z tym, co zostało przeniesione do Jython.

 7
Author: Michael Myers,
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
2012-03-14 04:14:11

Sprawdź swój sys jython./ align = "left" / Upewnij się, że biblioteka, którą chcesz załadować, znajduje się w tej ścieżce. Zobacz Jython faq Po Więcej Szczegółów.

 1
Author: Igal Serban,
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-01-22 22:44:13

Możesz znaleźć tutaj rozwiązanie Importowanie modułów Pythona w jython

Pobierz ez_setup.py stąd http://peak.telecommunity.com/dist/ez_setup.py

Następnie uruchom jython ez_setup.py <any module name>.

Uruchomienie go na dowolnej ścieżce folderu nie ma znaczenia.

Mógłbym zainstalować z nim pymysql, nie ma problemu.

 0
Author: Aminah Nuraini,
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
2017-05-23 12:08:23