在 jython 中导入 python 模块

Posted

技术标签:

【中文标题】在 jython 中导入 python 模块【英文标题】:Importing python modules in jython 【发布时间】:2011-03-16 10:18:16 【问题描述】:

我在 jython 下导入 scapy 时遇到了一些问题。我一直在做java,但是python只有一两天。

重现问题的简单案例是:

$jython

>>> import sys
>>> sys.path
['', '/usr/share/jython/Lib', '/usr/lib/site-python', '__classpath__']
>>> from scapy.all import *
Traceback (innermost last):
File "<console>", line 1, in ?
ImportError: no module named scapy

如果我在python 下执行这些完全相同的步骤,则一切正常。我如何告诉 jython 使用 scapy?如果有帮助,我正在运行 ubuntu 10.04 并通过 apt-get install 安装 jython 和 scapy

【问题讨论】:

在运行 vanilla Python 时检查sys.path。有区别吗? 【参考方案1】:

您在打印 sys.path 时做对了。现在你应该去你的python shell,然后这样做:

$ python
>>> import scapy
>>> print scapy.__file__

这将显示从哪里导入 scapy。最可能的问题是您的 jython sys.path 不包含包含 scapy 的目录。

【讨论】:

那么如何将 python 包的目录添加到 jython sys.path 中?【参考方案2】:

您可以为 jython 执行 easy_install。

运行:

jython ez_setup.py 

来自http://peak.telecommunity.com/dist/ez_setup.py

然后你会在你的 jython/bin 下得到一个 easy_install 脚本 去那里

jython easy_install scapy

(或您需要的任何模块)

那么下次启动 jython 时就可以导入了。

【讨论】:

我在 tomcat 下遇到了一个问题,我必须先做一个“导入站点” 官方文档在这里:jython.org/jythonbook/en/1.0/… 就我而言,我不得不改用jython ez_setup.py scapy 这对我有什么好处?我可以使用 PYTHONPATH 然后它可以导入模块。不行的是导入的模块可以导入其他模块。【参考方案3】:

对 Amala 的回答进行了修改。他的代码对我不起作用,但我用类似的方法解决了它。这可以代替。

从这里下载ez_setup.pyhttp://peak.telecommunity.com/dist/ez_setup.py

然后运行jython ez_setup.py scapy

在任何文件夹路径上运行都没关系

【讨论】:

以上是关于在 jython 中导入 python 模块的主要内容,如果未能解决你的问题,请参考以下文章

在 Jython 的 Pig UDF 中导入外部库时出现错误 1121

在 python 类中导入模块

在 Python 中导入模块的问题

在python中导入带参数的模块

在 Anaconda Python 中导入自己的模块

从内存中导入 Python 模块 [重复]