pyinstaller和pyproj的问题

时间:2013-11-25 19:26:56

标签: python-2.7 pyinstaller

我正在尝试使用pyinstaller执行独立应用程序。可执行文件刚刚构建正常,但是当我尝试使用集成在库pyproj上的函数执行某些操作时,可执行文件崩溃了。

脚本在Pycharm上运行正常,所以我认为问题是pyinstaller没有链接某种pyproj库。

我是否必须使用spec文件或其他方法做一些特别的事情来在使用pyinstaller构建的独立应用程序上指定pyproj?

这是我获得的错误:

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

这是我的“main.py”

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

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

提前致谢

3 个答案:

答案 0 :(得分:3)

问题是当pyproj与PyInstaller一起使用时,pyproj无法找到库文件夹中的数据文件。

解决方案是创建一个钩子文件,它将指定数据文件的位置,以便您可以将它们与我们的可执行文件链接。

 hook-pyproj.py

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

钩子文件可以位于Pyinstaller安装的“hooks”文件夹中,也可以使用命令--additional-hooks-dir,指定一个文件夹,其中将定位“hook-pyproj.py”

答案 1 :(得分:1)

刚刚回答上一个答案,自2014年以来,对PyInstaller进行了一些重构,这里是上面钩子文件的正确导入行:

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

答案 2 :(得分:0)

from PyInstaller.hooks.hookutils import collect_data_files
 datas = collect_data_files('pyproj')
  • 这对我没有用。可执行文件中再次出现一些错误。

但我在另一个帖子中发现问题可以用这个来解决:

from mpl_toolkits.basemap import pyproj as pyproj

pyinstaller似乎在集成pyproj模块本身时遇到了问题,但是底图包含pyproj而且pyinstaller不会忽略它。

仅供更新