[GRASS-dev] python2/3 and GRASS build on Arch

Maciej Sieczka msieczka at sieczka.org
Wed Oct 8 12:31:10 PDT 2014


W dniu 08.10.2014 o 13:04, Glynn Clements pisze:
> Maciej Sieczka wrote:

>>       --with-wxwidgets=/usr/bin/wx-config-2.8
>>
>> Per 2.8 wxWidgets specified, I don't get it why
>> /usr/lib/python2.7/site-packages/wx-3.0-gtk2/ gets involved in iclass
>> build. I would rather expect it to pick
>> /usr/lib/python2.7/site-packages/wx-2.8-gtk2-unicode/. Some details:
>
> --with-wxwidgets only affects compiled (C/C++) code which links
> against the wxWidges libraries. In 7.0, this means the wximgview
> module (visualization/wximgview) and nothing else. It doesn't affect
> wxGUI.
>
> In theory, code which uses the wxPython library is supposed to use
> something like:
>
> 	import wxversion
> 	wxversion.select('2.8')
> 	import wx
>
> to ensure that the correct version is used when there are multiple
> versions present on the system.
>
>> This is an Arch box. I do have all the NumPy stuff installed. There is a
>> problem on Arch that wx-3.0-gtk2/wx/lib/plot.py fails to import
>> numpy.oldnumeric [1] leading to those "NumPy not found" errors, but that
>> would not happen if iclass build referred to
>> wx-2.8-gtk2-unicode/wx/lib/plot.py instead - like I guess all the other
>> GRASS 7 Python modules do.
>
> Maybe everything is using wx-3.0, but only iclass is using the broken
> plots.py functionality?
>
> If you can run some other g.gui.* module, you can check which
> libraries it's actually using with "cat /proc/<pid>/maps", where <pid>
> is the PID of the g.gui.* process.

Indeed!

I patched iclass/g.gui.iclass.py with "wxversion.select('2.8')", just to 
let a full GRASS 7 build complete without errors, and actually every 
g.gui.* module except iclass is using wx-3.0-gtk2...

Is using a mix of wxPython 2.8 and 3.0 like this going to pose any usage 
problems in core GRASS or plugins?

Could GRASS offer a mechanism to enforce a specific wxPython version 
throughout all of GRASS build and run time? Or how to hack it in a more 
elegant way than patching those ~140 *.py files which import wx?

I can't just uninstall wxpython (which provides the problematic 
wx-3.0-gtk2), because wxpython-2.8 (providing an OK wx-2.8-gtk2-unicode) 
depends on it...

Maciek

-- 
Maciej Sieczka
http://www.sieczka.org



More information about the grass-dev mailing list