mad wrote, On 06/20/2010 07:11 PM:
Hi!
I am using pylint and had so far no problems. Now I want to run automatic
checks. Problem is, when I run pylint from cron or for example from an 'ssh -
x' session, I get a 'can not open display error. What can I do to check the
source code without a display?
Thanks in advance,
mad
$ pylint some_software.py
************* Module ccms_software
[...]
error while building astng for /usr/lib/python2.6/site-
packages/gtk-2.0/gtk/__init__.py
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/logilab/astng/manager.py", line 126,
in astng_from_file
astng = ASTNGBuilder(self).file_build(filepath, modname)
File "/usr/lib/python2.6/site-packages/logilab/astng/builder.py", line 118,
in file_build
node = self.string_build(data, modname, path)
File "/usr/lib/python2.6/site-packages/logilab/astng/builder.py", line 128,
in string_build
return self.ast_build(parse(data + '\n'), modname, path)
File "/usr/lib/python2.6/site-packages/logilab/astng/builder.py", line 147,
in ast_build
self.rebuilder.walk(node)
File "/usr/lib/python2.6/site-packages/logilab/astng/rebuilder.py", line 89,
in walk
self._walk(node)
File "/usr/lib/python2.6/site-packages/logilab/astng/rebuilder.py", line
109, in _walk
self._walk(child, node)
File "/usr/lib/python2.6/site-packages/logilab/astng/rebuilder.py", line
103, in _walk
handle_leave = node.accept(self)
File "/usr/lib/python2.6/site-packages/logilab/astng/nodes.py", line 159, in
accept
return func(self)
File "/usr/lib/python2.6/site-packages/logilab/astng/rebuilder.py", line
188, in visit_from
imported = node.root().import_module(node.modname)
File "/usr/lib/python2.6/site-packages/logilab/astng/scoped_nodes.py", line
297, in import_module
module = MANAGER.astng_from_module_name(modname)
File "/usr/lib/python2.6/site-packages/logilab/astng/manager.py", line 168,
in astng_from_module_name
module = load_module_from_name(modname)
File "/usr/lib/python2.6/site-packages/logilab/common/modutils.py", line 96,
in load_module_from_name
return load_module_from_modpath(dotted_name.split('.'), path, use_sys)
File "/usr/lib/python2.6/site-packages/logilab/common/modutils.py", line
136, in load_module_from_modpath
module = load_module(curname, mp_file, mp_filename, mp_desc)
File "/usr/lib/python2.6/site-packages/gtk-2.0/gtk/__init__.py", line 79, in
<module>
_init()
File "/usr/lib/python2.6/site-packages/gtk-2.0/gtk/__init__.py", line 67, in
_init
_gtk.init_check()
RuntimeError: could not open display
E: 35: No name 'glade' in module 'gtk'
The core of the problem seems to be that pygtk tries to initialize
itself when the module is loaded. pygtk has thus intentionally been
designed to not be loadable without X. (I have just been discussing
another aspect of this on
https://bugzilla.redhat.com/show_bug.cgi?id=553757)
pylint could perhaps implement an ugly workaround, but it would probably
be better to ask pygtk devs what they suggest. If would be nice if they
could change their implementation, but that is probably not a short term
solution.
Perhaps you can run your tests in some kind of X virtual frame buffer
such as Xvfb/Xnest/Xephyr?
/Mads
_______________________________________________
Python-Projects mailing list
Python-Projects@lists.logilab.org
http://lists.logilab.org/mailman/listinfo/python-projects