简体   繁体   中英

Issues with pyinstaller and pyproj

I'm trying to do an standalone application with pyinstaller. The executable has just build fine, but when I´m trying to do some operations with functions integrated on library pyproj, the executable crashes.

The script runs fine on Pycharm, so I think that the problem is that pyinstaller is not linking with some kind of library of pyproj.

May I have to do something special with spec file or another thing to specify pyproj on the standalone application built with pyinstaller?

This is the error that Ihave obtained:

Traceback (most recent call last):   File "<string>", line 6, in
<module>   File "C:\pyproj\build\main\out00-PYZ.pyz\pyproj", line 343,
in __new__   File "_proj.pyx", line 85, in _proj.Proj.__cinit__
(_proj.c:1190) 
RuntimeError: no system list, errno: 2

This is my "main.py"

 #!/usr/bin/env python
 # -*- coding: utf-8 -*-

 import pyproj 
 print pyproj.__version__ 
 p=pyproj.Proj(init='EPSG:4326')

Thanks in advance

The problem is that when using pyproj with PyInstaller, pyproj can not find the data files that are in the library folder.

The solution is to create a hook file, which will specify where the data files, so you can link them with our executable.

 hook-pyproj.py

 from PyInstaller.hooks.hookutils import collect_data_files
 datas = collect_data_files('pyproj')

The hook file can be located on "hooks" folder on Pyinstaller installation or using the order --additional-hooks-dir, specifying a folder in which will be located "hook-pyproj.py"

Just threading on the previous answer, since 2014 there has been some refactoring on PyInstaller and here is the correct import line for the hook file above :

from PyInstaller.utils.hooks import collect_data_files
datas = collect_data_files('pyproj')
from PyInstaller.hooks.hookutils import collect_data_files datas = collect_data_files('pyproj')
  • This didn't worked for me. There were some errors in the executable again.

But I found in another thread that the problem can be solved with this:

from mpl_toolkits.basemap import pyproj as pyproj

pyinstaller seem to have problems to integrate the pyproj module itself, but basemap includes pyproj and is not ignored by pyinstaller.

Just for update

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM