在 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.py
http://peak.telecommunity.com/dist/ez_setup.py
然后运行jython ez_setup.py scapy
。
在任何文件夹路径上运行都没关系
【讨论】:
以上是关于在 jython 中导入 python 模块的主要内容,如果未能解决你的问题,请参考以下文章