1

I have a short python script, called test:

import fiona
with fiona.open("C:\\Essai_compil", 'r') as l_Obs_shp: 
    for shp in l_Obs_shp:
        print shp['geometry']

I want to compile with py2exeor PyInstaller. OS: Windows7, Python 2.7 (32-bits), I've got erros. With py2exe, the 'log.txt' said :

Traceback (most recent call last):
File "test.py", line 1, in <module>
File "fiona\__init__.pyc", line 78, in <module>
File "fiona\collection.pyc", line 7, in <module>
File "fiona\ogrext.pyc", line 12, in <module>
File "fiona\ogrext.pyc", line 10, in __load
ImportError: DLL load failed: %1 n’est pas une application Win32 valide.
ImportError: DLL load failed: %1 is not a valid Win32 application.

With PyInstaller, log says:

File "ogrext.pyx", line 12 in init fiona.ogrext (src/fiona/ogrext.c:19107)
ImportError: cannot import name ogrinit

Problem are related to fiona module or some ogr stuff... I supposed this is not a 32/64 bits problem; all the modules I've used are 32-bits. More surely a DLL problem... Any ideas ?

3
  • What Operating System are you using? was this the location of the installers? lfd.uci.edu/~gohlke/pythonlibs/#fiona
    – Mapperz
    Oct 3, 2013 at 13:35
  • Check out this possibly helpful discussion thread mail-archive.com/[email protected]/msg02271.html and Google for others.
    – sgillies
    Oct 9, 2013 at 14:59
  • Some precisions about this error. SPECIFICATIONS: I work with the OSGeo4W'sPython (2.7.4), for 32 bits, because there's numerous geographic modules for Python.Fiona comes from here. I've choose v. 32 bits, for Python 2.7. I've copy the Fiona folder to OSGeo4W folder. PROBLEM: I've try to compile (with Py2exe) a simple module to read a shapefile named test.py (with Fiona) and write shapes coordinates into a .csv named myfile.csv (with csv), here: # test.py module # import fiona import csv shp
    – user23453
    Oct 30, 2013 at 10:13

2 Answers 2

3

I had the same issue when packaging a fiona project with py2exe. I think py2exe simply cannot resolve all the fiona dependencies. But fortunately fiona is well behaved: just add it under packages into the py2exe script and it will probably also work for you:

opts = {
  'py2exe': {
    'packages':['fiona'],
    'bundle_files': 3
    }
  }

setup(
      console=[{"script" : "test.py"}],
      options=opts,
      zipfile=None
      )
2

Thks geodata, I can compile my script (where I use fiona), with py2exe if I also put into dist folder these libraries:

  • geos.dll
  • spatialindex_c.dll
  • spatialindex.dll

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.