[Qgis-user] Error importing qgis in python

William Kyngesburye woklist at kyngchaos.com
Thu Nov 5 10:04:36 PST 2009


On Nov 5, 2009, at 10:47 AM, Daniel Arribas-Bel wrote:

> That was my impression, Giovanni. But when I do as suggested in your  
> link, I get the following error:
>
> dhcp-184-245:~ dreamessence$ python
> Python 2.5.2 (r252:60911, Feb 22 2008, 07:57:53)
> [GCC 4.0.1 (Apple Computer, Inc. build 5363)] on darwin
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import qgis.core
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> ImportError: dlopen(/Applications/qgis1.0.0.app/Contents/MacOS/share/ 
> qgis/python/qgis/core.so, 2): Library not loaded: @executable_path/ 
> lib/libqgis_core.1.0.dylib
>   Referenced from: /Applications/qgis1.0.0.app/Contents/MacOS/share/ 
> qgis/python/qgis/core.so
>   Reason: image not found
> >>>
>
> Any suggestion why this happens?
>

> On Thu, Nov 5, 2009 at 4:53 PM, G. Allegri <giohappy at gmail.com> wrote:
> > I believe the Python features of Qgis are supposed to be used from  
> within Qgis, either in plugins or the builtin python console.  It  
> >certainly is compiled that way, even if it is supposed to be  
> possible.
>
> That's not true. If you correctly setup the environment (path to qgis
> libraries, python modules, etc.) you can use qgis functionalities
> within python without starting up qgis itself.
> Look at here: http://desktopgisbook.com/Creating_a_Standalone_GIS_Application_1
>
> bye,
> giovanni

It was a guess with a disclaimer...  All the internal libraries and  
frameworks are relatively linked to the Qgis application binary - the  
'@executable_path' in the error above.  When an external python  
interpreter is used, it won't find them.

The instructions in that link have a small problem: LD_LIBRARY_PATH is  
DYLD_LIBRARY_PATH on OSX (though it's possible LD_LIBRARY_PATH also  
works).  Normally this would take care of the linker finding alternate  
copies of libraries and frameworks.  If DYLD_LIBRARY_PATH doesn't  
help, it's possible there is a problem with that Qgis build.

Try installing Qgis 1.3.  I just tested it on Leopard and it works:

export DYLD_LIBRARY_PATH=/Applications/Qgis.app/Contents/MacOS/lib:/ 
Applications/Qgis.app/Contents/Frameworks
export PYTHONPATH=/Applications/Qgis.app/Contents/Resources/python
python
 >>> import PyQt4.QtCore
 >>> import PyQt4.QtGui
 >>> import qgis.core
 >>> import qgis.gui


One note: from that python version 2.5.2, I'm guessing you're using  
the python.org python, instead of the system python (2.5.1).  That  
Qgis 1.0 (Tom's old all-in-one) may be compiled to use that, but later  
versions of Qgis (my builds) use the system Python.  The way the Qgis  
python library is made, it links to a specific python binary.  It may  
work externally, since the Qgis python library is only loaded by the  
application, but the Qgis application will not use the python.org  
Python, nor any python modules you may have installed there.

-----
William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
http://www.kyngchaos.com/

The equator is so long, it could encircle the earth completely once.




More information about the Qgis-user mailing list