Reputation: 3221
From the official networkx Version 1.9 notes and API changes:
Basic support is added for Jython 2.7 [...], although they remain not officially supported.
How can I install networkx on Jython?
What I have tried:
sudo /opt/jython2.7.0/bin/pip install networkx
which downloaded the file networkx-1.9.1-py2.py3-none-any.whl
, but then errored at some point:
Exception:
Traceback (most recent call last):
File "/opt/jython2.7.0/Lib/site-packages/pip/basecommand.py", line 133, in main
status = self.run(options, args)
File "/opt/jython2.7.0/Lib/site-packages/pip/commands/install.py", line 325, in run
requirement_set.install(
File "/opt/jython2.7.0/Lib/site-packages/pip/commands/install.py", line 325, in run
requirement_set.install(
File "/opt/jython2.7.0/Lib/site-packages/pip/req/req_set.py", line 633, in install
requirement.install(
File "/opt/jython2.7.0/Lib/site-packages/pip/req/req_install.py", line 719, in install
self.move_wheel_files(self.source_dir, root=root)
File "/opt/jython2.7.0/Lib/site-packages/pip/req/req_install.py", line 990, in move_wheel_files
move_wheel_files(
File "/opt/jython2.7.0/Lib/site-packages/pip/wheel.py", line 154, in move_wheel_files
compileall.compile_dir(source, force=True, quiet=True)
File "/opt/jython2.7.0/Lib/compileall.py", line 56, in compile_dir
if not compile_dir(fullname, maxlevels - 1, dfile, force, rx,
File "/opt/jython2.7.0/Lib/compileall.py", line 56, in compile_dir
if not compile_dir(fullname, maxlevels - 1, dfile, force, rx,
File "/opt/jython2.7.0/Lib/compileall.py", line 50, in compile_dir
if not compile_file(fullname, ddir, force, rx, quiet):
File "/opt/jython2.7.0/Lib/compileall.py", line 99, in compile_file
ok = py_compile.compile(fullname, None, dfile, True)
File "/opt/jython2.7.0/Lib/compileall.py", line 99, in compile_file
ok = py_compile.compile(fullname, None, dfile, True)
File "/opt/jython2.7.0/Lib/py_compile.py", line 99, in compile
_py_compile.compile(file, cfile, dfile)
File "/opt/jython2.7.0/Lib/py_compile.py", line 99, in compile
_py_compile.compile(file, cfile, dfile)
RuntimeException: java.lang.RuntimeException: Method code too large!
I added the following print statements before the _py_compile.compile(file, cfile, dfile)
functions:
print "file: %s" % file
print "cfile: %s" % cfile
print "dfile: %s" % dfile
which gave me:
file: /tmp/pip_build_vagrant/networkx/networkx/generators/atlas.py
cfile: None
dfile: None
Did anybody manage to install networkx 1.9 on Jython2.7.0?
Upvotes: 2
Views: 1088
Reputation: 60
Here's how to get networkx installed in Jython:
networkx/generators/atlas.py
(this is the file that's too large for Jython to parse. It doesn't work in Jython anyways, so just delete it).in the file networkx/readwrite/gml.py
, remove all mentions of lib2to3 (due to a current bug in Jython, lib2to3 is not available):
on lines around 75, change:
rtp_fix_unicode = RefactoringTool(['lib2to3.fixes.fix_unicode'],
{'print_function': True})
to:
rtp_fix_unicode = None
go back to the source folder, and run:
jython/pip install .
Or alternatively, if you don't have pip for jython:
jython setup.py install
It should install successfully, and you should be able to import networkx in Jython now.
Upvotes: 4