Использование urllib2 с Jython 2.2 - PullRequest
3 голосов
/ 26 июня 2010

Я работаю с продуктом, который имеет встроенный экземпляр Jython 2.2.Он не поставляется ни с одной из стандартных библиотек Python.Когда я запускаю этот экземпляр Jython, путь по умолчанию составляет

['./run/Jython/Lib', './run/Jython', '__classpath__']

. Я добавил все файлы модуля .py из Python 2.2 в каталог ./run/Jython/Lib, и я могу импортироватьих.Но я хочу использовать urllib2 и получаю эту ошибку:

Traceback (innermost last):
  File "<string>", line 2, in ?
  File "./run/Jython/Lib/urllib2.py", line 90, in ?
  File "./run/Jython/Lib/socket.py", line 41, in ?
ImportError: no module named _socket

Насколько я могу судить, модуль _socket является частью библиотек Python lib-dynload (_socket.so).Может ли Jython использовать этот файл?Я пытался поставить это на моем пути, но это не имело никакого эффекта.

Поиск в Google, похоже, говорит мне, что другие могут использовать urllib и urllib2 с Jython 2.2, но я застрял, пробовал библиотеки модулей из более старых и более новых версий Python.

Спасибо!

1 Ответ

2 голосов
/ 26 июня 2010

Andy,

Я получил чистую установку Jython 2.2.1 и успешно запустил следующий скрипт.

$ ./jython
Jython 2.2.1 on java1.6.0_17
Type "copyright", "credits" or "license" for more information.
>>> import urllib2
>>> f = urllib2.urlopen('http://www.python.org/')
>>> print f.read(100)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtm
>>>

Я вернулся и проверил базу кода инфраструктуры Meandre.Я обнаружил, что небольшая модификация была введена в путь встроенного Jython.Однако это не главная проблема.Основная проблема заключается в том, что я только что понял, что системные модули Jython отсутствуют в дистрибутивах Meandre.

Вы можете исправить это, вручную скопировав содержимое на

<JYTHON_HOME>/lib

в

<MEANDRE_HOME>/run/Jython/Lib

и перезапустив экземпляр сервера.Теперь модули по умолчанию должны быть доступны для компонентов инфраструктуры.

Просто дайте мне знать, если это поможет вам, и я скоро поработаю над тем, чтобы исправить это.

...