python - 在 Jython 2.2 中使用 urllib2

标签 python jython urllib2 libraries

我正在使用具有内置 Jython 2.2 实例的产品。它不附带任何 Python 标准库。当我运行这个 Jython 实例时,默认路径是

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

我将 Python 2.2 中的所有 .py 模块文件添加到 ./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 的模块库。

谢谢!

最佳答案

安迪,

我安装了干净的 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 的路径中引入了一个小修改。然而,这不是主要问题。主要问题是我刚刚意识到 Meandre 分发包中缺少 Jython 的系统模块。

您可以通过手动复制上的内容来修复它

<JYTHON_HOME>/lib

<MEANDRE_HOME>/run/Jython/Lib

并重新启动服务器实例。现在默认模块应该可用于基础设施的组件。

请告诉我这是否能让您继续,我会尽快解决这个问题。

关于python - 在 Jython 2.2 中使用 urllib2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3121446/

相关文章:

java - JRuby/Jython 有纯解释模式吗?

java - 如何将 PyObject 转换为 java boolean 类型

python - 使用额外信息重新引发 HTTPError

python - 使用不带 Gzip 编码的 POST 检索 JSON 内容后,无法解码 JSON 对象

python-3.x - 如何抓取特定表和数据 python 的特定行/单元格

Python检测字符串中的两个相同的东西

python - 如何在Python中的字典中拥有两个键和一个值

java - Jython - 使用 Python 数据结构或 Java 数据结构更快吗?

java - 通过互联网在两台计算机之间发送命令

python - Numpy:使用索引列表将值分配给二维数组