11
votes

I'm having some issues importing scapy under jython. I've been doing java forever, but python for only a day or two.

The simple case to reproduce the problem is:

$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

If I do these exact same steps under python, everything works. How do I tell jython to use scapy? If it helps, I'm running ubuntu 10.04 and installed jython and scapy via apt-get install

3
Check the sys.path when you run vanilla Python. Is there a difference? - Donald Miner

3 Answers

15
votes

You've done the right thing printing sys.path. Now you should go to your python shell, and do this:

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

This will show where scapy is being imported from. The most likely problem is that your jython sys.path doesn't include the directory containing scapy.

5
votes

You can do the easy_install for jython.

Run:

jython ez_setup.py 

from http://peak.telecommunity.com/dist/ez_setup.py

Then you will get a easy_install script under your jython/bin go there and

jython easy_install scapy

(or whatever module you need)

Then next time you startup jython you will be able to import it.

0
votes

Modification from Amala's answer. His code doesn't work for me, but I solved it with something similar. This works instead.

Download ez_setup.py from here http://peak.telecommunity.com/dist/ez_setup.py

Then run jython ez_setup.py scapy.

Running it on any folder path doesn't matter