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 [email protected] http://lists.logilab.org/mailman/listinfo/python-projects
